0

库版本:APScheduler-3.5.3 SQLAlchemy-1.3.4 cx_Oracle-7.1.3 python-2.7.14

BackgroundScheduler 已启动(使用 job_store)并且工作成功(您可以添加作业,作业存储工作正常等)但是,当超过 24 小时不活动时(没有添加或修改新作业)添加新作业时会出现以下错误“ OperationalError('(cx_Oracle.OperationalError) ORA-03114: 未连接到 ORACLE',) "

代码确定:

job_store = SQLAlchemyJobStore(url=URL_JOBSTORE, tablename = TABLE_JOBSTORE)
_job_scheduler = BackgroundScheduler()
_job_scheduler.add_jobstore(job_store)
_job_scheduler.start()
_job_scheduler.add_job(...) #OK

代码错误:

job_store = SQLAlchemyJobStore(url=URL_JOBSTORE, tablename = TABLE_JOBSTORE)
_job_scheduler = BackgroundScheduler()
_job_scheduler.add_jobstore(job_store)
_job_scheduler.start()
#LONG TIME OPERATIONS 24 hours past
_job_scheduler.add_job(...) # drops OperationErrror exception

错误已满:

OperationalError: (cx_Oracle.OperationalError) ORA-03114: not connected to ORACLE\n[SQL: INSERT INTO "jobrestore_PRE_CENTRE2_0" (id, next_run_time, job_state) VALUES (:id, :next_run_time, :job_state)](此错误的背景在: http://sqlalche.me/e/e3q8 )\n'

我认为 Jobstore 已失去联系。因为如果您再次创建调度程序,它会正常工作。有什么方法可以将 Jobstore 重新连接到数据库?

谢谢

4

1 回答 1

0

我建议您尝试将 engine_options={'pool_pre_ping': True} 传递给作业商店。这应该可以防止由于数据库服务器关闭空闲连接而导致的任何错误。

job_store = SQLAlchemyJobStore(url=URL_JOBSTORE, tablename = TABLE_JOBSTORE, engine_options={'pool_pre_ping': True})

https://github.com/agronholm/apscheduler/issues/419

于 2020-02-04T14:52:25.963 回答