Я хочу, чтобы пользователь моего приложения запускал/останавливал периодические задачи стиля crontab с использованием эффекта Celery. Сейчас я бег сельдерея сДинамическое расписание Задача бисера из сельдерея с флягой
venv/bin/celery worker -A celery_worker.celery --loglevel=info
я получил сельдерей Удара работает с этим простым примером:
@celery.task
def add(x, y):
return x + y
на моем конфигурационный файл:
CELERYBEAT_SCHEDULE = {
'add-every-30-seconds': {
'task': 'app.email.add',
'schedule': timedelta(seconds=30),
'args': (16, 16)
},
}
CELERY_TIMEZONE = 'UTC'
потом запустить сельдерей бить работник с
celery -A celery_worker.celery beat -s ~/Documents/cesco-automation/power/celerybeat-schedule
И это работает отлично! Но мне нужно больше контролировать график.
Также на моей оболочке приложения я могу это сделать.
>>>add.apply_async([80,800],countdown=30)
>>> from datetime import datetime, timedelta
>>> tomorrow = datetime.now() + timedelta(days=1)
>>> add.apply_async(args=[10, 10], eta=tomorrow)
Это замечательно, но я разрабатываю приложение для домашней автоматизации, поэтому мне также необходимо остановить задачи. Как мне это сделать??
Я также нашел это link, в котором упоминаются классы планировщика django. Это именно то, что мне нужно. На Celery docs он упоминает флаг -S, но я не знаю, как правильно добавить класс в мое приложение Flask. Как я могу использовать его с Flask?
Нужен ли мне эффект Сельдерея? Есть ли другой вариант, другой crontab? Кронтаб, кажется, не достаточно острый.
Планировщик по сельдеру по умолчанию сортирует. Даже не заставляйте меня начинать общаться с часовыми поясами. Я бы использовал планировщик базы данных, могу посмотреть на него для django http://celery.readthedocs.org/en/latest/userguide/periodic-tasks.html#using-custom-scheduler-classes – reptilicus
Я упоминаю тот же документ на вопрос, но не знаю, как заставить его работать. Можно ли использовать планировщик Django в моем приложении Flask? Как? – CESCO
@CESCO, Привет, вы пробовали использовать планировщик django в флеш-приложении? если да, пожалуйста, поделитесь –