已调用add_job()后作业未存储在数据库中

问题描述 投票:0回答:1

我正在尝试使用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:

在启动调试模式时,我收到以下消息:

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

但是第一则消息表明调度程序已经启动。

python postgresql apscheduler
1个回答
0
投票

我遇到了同样的问题,我用1条线来设置数据库解决了例:调度程序= BlockingScheduler(jobstores = jobstores(您不需要此参数),执行程序=执行程序,job_defaults = job_defaults,时区='Etc / GMT + 3')

scheduler = BlockingScheduler(executors = executors,job_defaults = job_defaults,timezone ='Etc / GMT + 3')-使用此行来设置您的数据库

scheduler.add_jobstore('sqlalchemy',url ='sqlite:///jobs.sqlite')] >>

完成了您的工作,开始将其保存到数据库中

© www.soinside.com 2019 - 2024. All rights reserved.