似乎无法按照我希望的方式使用 'sched' 模块



我正在研究的python项目是一个在预定时间输出covid数据和新闻的网页。项目必须使用sched模块。

问题我有它与schedule_covid_update()功能。调用函数时。您有2个必需的参数,更新发生的持续时间/时间,更新的名称。还有两个可选参数,news和data。这是用来告诉schedule_covid_update()是否两个或只有一个更新类型正在发生在预定的时间。

现在,如果我像这样调用这个函数两次例如:

schedule_covid_update(4, "test update 2", news="news", data="data")
schedule_covid_update(0, "test update 1", news="news", data="data")

我希望"test update 1"的数据出现并在"test update 2"之前返回数据,而不管调用schedule_covid_update()的顺序如何。但是它没有,它调度"test update 2"

在测试此代码时也是如此。您可以尝试其他函数代替updateDataupdateNews。因为我不能给出函数的代码。

scheduler.py:

import time, sched
from datetime import datetime
from covid_data_handler import *

s = sched.scheduler(time.time, time.sleep)
def schedule_covid_update (update_interval, update_name, news="", data=""):
print("update name: " + update_name)
if(news=="news" and data=="data"):
#s.enter(timeDuration(update_interval),1, updateData)
#s.enter(timeDuration(update_interval),1, updateNews)
s.enter(update_interval,1, updateData)
s.enter(update_interval,1, updateNews)
print("Updating news and data")
elif(news=="news" and data!="data"):
#s.enter(timeDuration(update_interval),1, updateNews)
s.enter(update_interval,1, updateNews)
print("Updating news only")
elif(news!="news" and data=="data"):
#s.enter(timeDuration(update_interval),1, updateData)
s.enter(update_interval,1, updateData)
print("Updating data only")
#scheduler.run(blocking=False)
else:
print("No Update")
s.run()

schedule_covid_update(4, "test update 2", news="news", data="data")
schedule_covid_update(0, "test update 1", news="news", data="data")

查看scheduler.run的文档。如果将s.run()放在函数中,它将永远阻塞并且永远不会到达第二个计划任务。在调度函数之外,先调度,然后独立地run调度程序。

相关内容

  • 没有找到相关文章

最新更新