apscheduler:返回了多个 DjangoJobExecution——它返回了 2

问题描述

在我的项目调度程序中,在执行作业中返回此错误,请帮助我

这是我在cosole中的错误,然后执行程序

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...