我在MongoDB上与Flask应用程序一起运行APScheduler。目标是每隔30分钟运行一次函数,所以我这样运行任务:
scheduler_init.add_job(check_for_expire, 'date', run_date=date_activate_until, args=[event],
misfire_grace_time=900)
其中“事件”是mongoengine对象。
问题是,当它在指定的时间内运行时,“事件”的值与数据库中的实际值不同(我使用调试器来确保是这样)而且,如果我有两个不同的工作,则两个函数和数据库中的值都将不同(它们可以完全不同)]
因此,当您执行add_job
时,参数是通过值而不是通过引用传递给函数的。因此它复制了“事件”对象创建作业时,因此我得到的是旧值
所以现在在函数中,我向数据库运行查询以获取新值:
Event.objects.filter(id = event.id).first()
并确保尚未删除您的对象