我正在研究的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"
。
在测试此代码时也是如此。您可以尝试其他函数代替updateData
和updateNews
。因为我不能给出函数的代码。
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
调度程序。