【问题标题】:APScheduler Jobstore Oracle drops "OperationalError ORA-03114" after adding a job (add_job)APScheduler Jobstore Oracle 在添加作业 (add_job) 后丢弃“OperationalError ORA-03114”
【发布时间】:2020-05-20 07:03:08
【问题描述】:

库版本: 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: not connected to 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: 不是 连接到 ORACLE\n[SQL: INSERT INTO "jobrestore_PRE_CENTRE2_0" (id, next_run_time, job_state) 值 (:id, :next_run_time, :job_state)] (此错误的背景:http://sqlalche.me/e/e3q8)\n'

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

谢谢

【问题讨论】:

    标签: python oracle sqlalchemy apscheduler ora-03114


    【解决方案1】:

    我建议您尝试将 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-16
      • 2020-04-17
      • 2015-05-06
      • 2010-09-13
      • 2019-08-24
      • 1970-01-01
      • 1970-01-01
      • 2021-06-20
      相关资源
      最近更新 更多