gpt4 book ai didi

python - APScheduler 作业 ID : why are jobs allowed to share IDs?

转载 作者:行者123 更新时间:2023-12-01 09:09:27 26 4
gpt4 key购买 nike

我正在开发一个利用 BackgroundScheduler 的 Flask 应用程序。该应用程序的一项功能是发送一个在特定日期安排作业的请求,但前提是该日期还没有作业。所以我想我可以依靠 job id 参数来保持唯一......但是,看起来不一定如此。

这是一个 super 简单的示例,将具有相同 id 的两个作业添加到调度程序:

from apscheduler.schedulers.background import BackgroundScheduler

scheduler = BackgroundScheduler()


def hello():
print "Hello!"


def goodbye():
print "Goodbye!"

scheduler.add_job(hello, trigger='interval', seconds=5, id='1')
scheduler.add_job(goodbye, trigger='interval', seconds=5, id='1')

print scheduler.get_jobs()
print scheduler.get_job('1')

输出

[<Job (id=1 name=hello)>, <Job (id=1 name=goodbye)>]
hello (trigger: interval[0:00:05], pending)

我本以为会因为 ID 冲突而出错。但相反,两个作业均已注册,并且在查询特定作​​业 ID 时,仅返回第一个作业。

此外,将 replace_existing 参数设置为 True 似乎并不能取代该作业。

我是否遗漏了一些重要的东西,比如配置作业存储?

最佳答案

当您的调度程序尚未启动时,它会将作业添加到一些没有验证的pending_job列表中,这可能是一个错误或我不知道的意图,但您可以通过首先启动调度程序然后添加来验证这一点您将收到 ConflictingIdError 的作业。

关于python - APScheduler 作业 ID : why are jobs allowed to share IDs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51787976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com