每次部署后,APScheduler都会重置

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

我有一个脚本,运行时将rss feed解析任务添加到一些芹菜队列中。现在我已经实现了一个apscheduler来每2小时运行一次脚本来从feed中获取新数据。

我的实现看起来像这样:

#!/usr/bin/env python
import atexit
import logging
import os
from logging import getLogger

from apscheduler.schedulers.blocking import BlockingScheduler


logger = getLogger('scheduled_parser')
PARSER_SCHEDULER = 'parser_scheduler'


def main():
   scheduler = BlockingScheduler(job_defaults={'coalesce': True})
   scheduler.add_jobstore('sqlalchemy',alias='scheduler_config', url=os.environ.get("DATABASE_URL"))
   scheduler.add_job(run_parser, 'interval', seconds=int(os.environ.get("SCHEDULER_RUN_FREQUENCY")),
                     id=PARSER_SCHEDULER, replace_existing=True)
   scheduler.start()
   atexit.register(lambda: scheduler.shutdown())

def run_parser():
   < code to add items to queues>

if __name__ == "__main__":
   logging.basicConfig()
   logger.setLevel(logging.INFO)
   main()

我的代码部署在heroku上,我在proc文件中有以下内容

clock: python scheduled_parser
<celery worker processes>

我有以下问题:

  1. 我将调度程序作业存储在持久存储中,我甚至可以在我的数据库中看到它,但是当我执行scheduler.get_job(PARSER_SCHEDULER,'scheduler_config')时,我得到None
  2. 每当我在heroku上部署时,我认为下一次运行正在更新。例如,如果解析器设置为每2小时运行一次,下一次运行将在下午4:00运行,如果我在下午3:00在Heroku上部署,则我的下一次运行发生在下午5:00而不是下午4:00。
python-3.x heroku apscheduler
1个回答
0
投票

不确定你的问题#1,但我认为问题#2是在每次部署时,这一行将取代作业,从而重置计划:

   scheduler.add_job(run_parser, 'interval', seconds=int(os.environ.get("SCHEDULER_RUN_FREQUENCY")),
                 id=PARSER_SCHEDULER, replace_existing=True)
© www.soinside.com 2019 - 2024. All rights reserved.