从flask应用程序动态添加定期任务

时间:2013-09-06 10:28:28

标签: flask celery django-celery apscheduler

我在heroku部署了一个烧瓶网络应用程序。我需要安排在特定时间安排的后台任务。我尝试过使用apscheduler模块。虽然它允许定义周期性任务,但是我很容易在运行时从应用程序中添加它们。

我尝试在apscheduler

中共享相同的作业库
import time

from apscheduler.scheduler import Scheduler
from apscheduler.jobstores.shelve_store import ShelveJobStore

sched = Scheduler()
sched.add_jobstore(ShelveJobStore('jobstore.db'), 'shelve')

sched.start()

从终端我尝试了这个,

Python 2.7.5 (default, May 12 2013, 12:00:47) 
[GCC 4.8.0 20130502 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from apscheduler.scheduler import Scheduler
>>> sc = Scheduler()
>>> sc.add_jobstore('jobstore.db', 'shelve')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/dhananjay/git/blast/venv/lib/python2.7/site-packages/apscheduler/scheduler.py", line 168, in add_jobstore
    jobstore.load_jobs()
AttributeError: 'str' object has no attribute 'load_jobs'

我在寻找基于芹菜的方法时遇到了this question。它从django的角度讨论了同样的问题,但我无法使用我的应用程序(我完全忘记了django)

1 个答案:

答案 0 :(得分:0)

当您尝试从终端运行它时,您给add_jobstore一个字符串作为第一个参数,而不是作业存储。它期望将作业存储作为第一个参数see the documentation for more info

至于在Heroku中安排后台任务,我建议您阅读有关此事的Worker Dynos, Background Jobs and Queueing文章。