发送HTTP请求,在下一个间隔之前打印数据

问题描述 投票:0回答:1

我的脚本每 45 秒向 API 端点发送一次请求,以获取最新的“帖子标题”(如果有新的帖子标题打印在我的控制台上)。假设脚本在下午 6:00:00 发送请求,那么下一个请求将是下午 6:00:45,如果网站在下午 6:00:15 发布新的“标题”,则直到下一次检查(即 6)时才会打印:00:45 PM..我如何修改脚本以立即打印这个新的“标题”,而不是等待下一个请求直到下午 6:00:45。

Python脚本:

import requests
import time

url = 'https://example.com/api'
headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"}

previous_titles = []

def fetch_titles():
    global previous_titles
    while True:
        resp = requests.get(url, headers=headers)
        data = resp.json()
    
        for title in data['latest']['posts']:
            if title['title'] not in previous_titles:
                current_time = time.strftime('%Y-%m-%d %H:%M:%S')
                print(f"[{current_time}] {title['title']}")
                previous_titles.append(title['title'])
    
        time.sleep(45)

if __name__ == "__main__":
    fetch_titles()

我可以设置间隔每 6 秒检查一次并打印新的,但我不想向网站发出很多请求。

python python-requests
1个回答
0
投票

如果您无法每 6 秒 ping 站点一次以上,则无法通过 POST 请求执行此操作。使用此模型,如果没有请求,就无法将数据从服务器传输到客户端。如果您是后端架构师,我建议您研究一下 Websockets 或服务器端事件。如果您没有构建后端,则可能已经实现了其中之一。您尝试 ping 的服务是什么?

© www.soinside.com 2019 - 2024. All rights reserved.