Динамическое добавление периодических задач из фляжного приложения

У меня есть фляжное веб-приложение, развернутое в героку. Мне нужно запланировать выполнение фоновой задачи в определенное время. Я попытался использовать модуль 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, фоновые задания и очереди статья на эту тему.

person Christopher Su    schedule 22.07.2014