我正在尝试使用 Flask-APScheduler 运行一些延迟的作业,并且在设置并运行应用程序后,它成功在Postgres数据库中创建了作业表,但没有在{{1}之后将作业保存在那里}已成功调用。
config.py (试图使用默认的表模式和表名,但仍未存储任何作业)
add_job()
添加作业代码
(显示的两个日志消息和SCHEDULER_TIMEZONE = utc
SCHEDULER_API_ENABLED = False
SCHEDULER_JOBSTORES = {
'default': SQLAlchemyJobStore(
url=SQLALCHEMY_DATABASE_URI,
tableschema=DB_SCHEMA,
tablename='jobs'
)
}
SCHEDULER_EXECUTORS = {
'default': ThreadPoolExecutor(20),
'processpool': ProcessPoolExecutor(5)
}
SCHEDULER_JOB_DEFAULTS = {
'coalesce': False,
'max_instances': 3
}
正文均被忽略。也尝试隐式设置except
但仍然存在相同的问题)
jobstore='default'
job.py (要运行的测试作业)
date = datetime.strptime(date_string, DATETIME_FORMAT)
try:
app.logger.info('adding job')
scheduler.add_job(
job_id,
publish_post,
name=job_name,
trigger='date',
next_run_time=date,
kwargs={
'channel': channel,
'post': post
}
)
app.logger.info('job added')
except Exception as e:
app.logger.error(e)
sentry.captureException()
return {
'status': 'FAILED',
'message': 'Can not add job ({})'.format(job_name)
}
UPD:
在启动调试模式时,我收到以下消息:
def publish_post(channel, post):
app.logger.info('{}: {}'.format(channel, post.text))
但是在gunicorn_scheduler_1 | 2019-04-04 07:07:21 - INFO - Scheduler started
gunicorn_scheduler_1 | 2019-04-04 07:07:21 - DEBUG - No jobs; waiting until a job is added
和add_job()
之间的adding job
通话之后,我收到了来自APScheduler的另一条消息:
job added
但是第一则消息表明调度程序已经启动。
答案 0 :(得分:0)
我遇到了同样的问题,我用1条线设置数据库解决了 例: scheduler = BlockingScheduler(jobstores = jobstores(您不需要此参数),执行程序=执行程序,job_defaults = job_defaults,时区='Etc / GMT + 3')
调度程序= BlockingScheduler(执行程序=执行程序,job_defaults = job_defaults,时区='Etc / GMT + 3') -使用此行来设置数据库
scheduler.add_jobstore('sqlalchemy',url ='sqlite:///jobs.sqlite')
它完成了您的工作,开始保存在数据库内部