2017-02-14 7 views
2

Итак, я пытался выяснить, как выполнять запланированные задачи, я нашел Сельдерей и смог выполнить простые запланированные задачи. Для этого мне нужно открыть командную строку и запустить celery -A proj beat для выполнения задач. Это прекрасно работает в среде разработки, но при постановке на производство это будет проблемой.Django-Сельдерей в производстве?

Итак, как я могу заставить сельдерей работать без использования командной строки? Когда мой производственный сервер подключен к сети, как я могу убедиться, что мой планировщик поддерживает его? Может ли сельдерей сделать это или мне нужно пойти по другому методу?

+0

Какой вопрос вы ожидаете в производстве? –

+0

То, что я не смогу запустить сельдерей без моего компьютера в течение всего времени, даже через сервер, находится на другом компьютере. – user2361174

+3

Вы всегда можете его демонизировать. Проверьте это, http://docs.celeryproject.org/en/latest/userguide/daemonizing.html –

ответ

2

Мы используем сельдерей в нашей производственной среде, которая, как оказалось, находится на Heroku. Мы находимся в процессе перехода к AWS. В обеих средах сельдерей хорошо гудит.

Было бы полезно понять, как будет выглядеть ваша производственная среда. Я немного смущен, почему вы будете беспокоиться об отключении компьютера, поскольку использование Django подразумевает, что вы используете показ веб-сайта ... Вы обслуживаете свой сайт с вашего ноутбука?

В любом случае, предполагая, что вы собираетесь запускать ваш производственный сервер с облачной платформы, все, что вам нужно сделать, это отправить любые командные строки, необходимые для запуска Django и командной строки для Celery (как вы уже отметили в своем вопрос).

С точки зрения конфигурации вы говорите, что у вас есть запланированные задачи, поэтому вы должны установить расписание бит в файле config.py. Если нет, то он должен выглядеть следующим образом (предполагается, что у вас есть модуль под названием tasks.py который содержит ваши сельдерея определения задач:

from celery.schedules import crontab 

beat_schedule = { 
    'task1': { 
     'task': 'tasks.task_one', 
     'schedule': 3600 
    }, 
    'task2': { 
     'task': 'tibController.tasks.update_old_retail', 
     'schedule': crontab(hour=12, minute=0, day_of_week='mon-fri' 
    } 
} 

Затем в tasks.py просто вызовите конфигурационный файл, который вы просто сделать это:

from celery import Celery 
import config 

app = Celery('tasks') 
app.config_from_object(config) 

Вы можете найти больше кронтаб в docs Вы также можете оформить этот repo для простого примера сельдерея

в итоге:..

  1. Создайте конфигурационный файл, который определяет, какие задачи выполняются при
  2. Загрузите конфигурационный файл в вашем сельдерея приложение
  3. Получить облачную платформу для запуска кода на.
  4. Run сельдерей так же, как вы уже определили

Надежда, что помогает.

+0

так в основном установка этого не требовала бы ввода 'celery -A proj beat' на терминал? – Bijoy

+0

Да, вы все равно хотите запустить команду бит, чтобы сельдерей знал, чтобы начать ее. Вот как я начинаю свой сельдерей: 'celery -A task_module.tasks worker -loglevel = info -beat'. –