如何解决apscheduler:返回了多个 DjangoJobExecution——它返回了 2
在我的项目调度程序中,在执行作业中返回此错误,请帮助我
Error notifying listener
Traceback (most recent call last):
File "C:\Users\angel\project\venv\lib\site-packages\apscheduler\schedulers\base.py",line 836,in _dispatch_event
cb(event)
File "C:\Users\angel\project\venv\lib\site-packages\django_apscheduler\jobstores.py",line 53,in handle_submission_event
DjangoJobExecution.SENT,File "C:\Users\angel\project\venv\lib\site-packages\django_apscheduler\models.py",line 157,in atomic_update_or_create
job_id=job_id,run_time=run_time
File "C:\Users\angel\project\venv\lib\site-packages\django\db\models\query.py",line 412,in get
(self.model._Meta.object_name,num)
django_apscheduler.models.DjangoJobExecution.MultipleObjectsReturned: get() returned more than one DjangoJobExecution -- it returned 2!
这是我的代码
class Command(BaseCommand):
help = "Runs apscheduler."
scheduler = BackgroundScheduler(timezone=settings.TIME_ZONE,daemon=True)
scheduler.add_jobstore(DjangoJobStore(),"default")
def handle(self,*args,**options):
self.scheduler.add_job(
delete_old_job_executions,'interval',seconds=5,id="delete_old_job_executions",max_instances=1,replace_existing=True
)
try:
logger.info("Starting scheduler...")
self.scheduler.start()
except KeyboardInterrupt:
logger.info("Stopping scheduler...")
self.scheduler.shutdown()
logger.info("Scheduler shut down successfully!")
解决方法
不确定您是否仍然遇到此问题。我有同样的错误,发现你的问题。原来这种情况只发生在开发环境中。
因为python3 manage.py runserver
默认启动两个进程,代码
似乎注册了两条作业记录,并在下次运行时找到了两个条目。
使用 --noreload
选项,它只启动一个调度程序线程并且运行良好。顾名思义,它不会自动重新加载您所做的更改。
python3 manage.py runserver --noreload
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。