Я пытаюсь использовать Flask-APScheduler для запуска некоторых отложенных заданий, и после установки и запуска приложения оно успешно создает таблицу заданий в базе данных Postgres, но не сохраняет там задания после того, как add_job()
было успешно позвонил.
config.py
(попытался использовать таблицу по умолчанию и имя таблицы, но работы пока не сохранены)
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'
, но проблема все та же)
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)
}
job.py
(тестовое задание для запуска)
def publish_post(channel, post):
app.logger.info('{}: {}'.format(channel, post.text))
UPD:
При включенном режиме DEBUG у меня появляются следующие сообщения:
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
& job added
У меня есть дополнительное сообщение от APScheduler:
2019-04-04 07:09:46 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts
Но первое сообщение говорит о том, что планировщик уже запущен.