如何实现Python脚本持续运行:每小时执行msg_work请求、每日执行msg_daily请求
解决方案
你的初始代码会无限循环同时发送两个请求,完全没有时间间隔,自然达不到按小时/天定时发送的需求。下面给你两种可行的实现方式:
方法一:用time.sleep+时间戳控制(无需额外依赖)
这种方式通过记录每次发送的时间戳,计算下次等待时长,避免长时间运行后的误差累积。
import time import requests # 请替换成你的实际配置 url = "你的目标接口地址" auth = {"Authorization": "你的认证信息"} msg_work = {"key": "每小时发送的消息内容"} msg_daily = {"key": "每日发送的消息内容"} def main(): # 初始化上次发送时间,确保脚本启动时立即发送一次 last_hourly_send = time.time() last_daily_send = time.time() while True: now = time.time() # 每小时发送一次msg_work if now - last_hourly_send >= 3600: requests.post(url, headers=auth, data=msg_work) last_hourly_send = now # 每24小时发送一次msg_daily if now - last_daily_send >= 86400: requests.post(url, headers=auth, data=msg_daily) last_daily_send = now # 每次循环休眠1分钟,避免占用过多CPU资源 time.sleep(60) if __name__ == '__main__': main()
方法二:用schedule库(更简洁易读)
如果觉得手动处理时间太麻烦,可以用专门的定时任务库schedule,先通过pip install schedule安装:
import schedule import time import requests # 替换成你的实际配置 url = "你的目标接口地址" auth = {"Authorization": "你的认证信息"} msg_work = {"key": "每小时发送的消息内容"} msg_daily = {"key": "每日发送的消息内容"} # 定义发送函数 def send_hourly_msg(): requests.post(url, headers=auth, data=msg_work) def send_daily_msg(): requests.post(url, headers=auth, data=msg_daily) def main(): # 设置定时规则 schedule.every().hour.do(send_hourly_msg) schedule.every().day.do(send_daily_msg) # 可选:启动时立即发送一次,避免等待第一个周期 send_hourly_msg() send_daily_msg() # 持续运行任务调度 while True: schedule.run_pending() time.sleep(1) if __name__ == '__main__': main()
额外提示
- 可以给请求添加
try-except捕获异常,比如网络错误,防止脚本因为一次请求失败就崩溃。 - 如果需要脚本长期稳定运行,建议用系统服务托管(比如Linux的systemd、Windows的任务计划),避免关闭终端后脚本停止。
内容的提问来源于stack exchange,提问作者deadinsideclown
相关产品推荐
相关产品推荐

