我在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)
答案 0 :(得分:0)
当您尝试从终端运行它时,您给add_jobstore一个字符串作为第一个参数,而不是作业存储。它期望将作业存储作为第一个参数see the documentation for more info。
至于在Heroku中安排后台任务,我建议您阅读有关此事的Worker Dynos, Background Jobs and Queueing文章。