Добавяне на периодични задачи динамично от приложението flask

Имам уеб приложение за колба, внедрено в 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'

Попаднах на този въпрос, докато търси подход, базиран на целина. Говори за същия проблем от гледна точка на django, но не мога да го накарам да работи с моето приложение (напълно не обръщам внимание на django)


person Dhananjay B    schedule 06.09.2013    source източник
comment
Проблемът тук е, че в първия случай извиквате sched.add_jobstore с екземпляр на ShelveJobStore като първи аргумент, а във втория го извиквате с низ като първи аргумент. Променете втория си пример, за да използвате и ShelveJobStore и нещата просто трябва да работят.   -  person Sean Vieira    schedule 01.07.2014
comment
Безплатен екземпляр на Heroku няма да позволи фонови нишки, които всъщност не са споменати тук .. така че няма представа дали случаят е такъв. Фоновите нишки ще се броят към използването на процесора на платен акаунт и могат да бъдат скъпи... така че преценете дали Heroku е правилното място за планирана работа или можете да елиминирате това, като направите малко умно инженерство. Дори тогава, както подсказва отговорът, бихте използвали фонов дино   -  person Alex R    schedule 06.06.2019


Отговори (1)


Когато се опитахте да го стартирате от терминала, вие дадохте на add_jobstore низ като първи параметър, вместо магазин за работа. Той очаква магазин за работа като първи параметър, вижте документацията за повече информация.

Що се отнася до планирането на фонови задачи в Heroku, бих препоръчал да прочетете Worker Dynos, Background Jobs and Queueing статия по въпроса.

person Christopher Su    schedule 22.07.2014