2013-06-18 3 views
1

У меня есть проект Django в Mac OS X (10.8.4) с приложением, которое предназначено для моделирования аэропорта. В базе данных SQLite у меня есть несколько таблиц, и один из них относится к задержкам рейсов (полет, дата, новый_час, причина).Сельдерей и Django - Запуск работника как Daemon (Mac OS X)

Моя цель - использовать Сельдерей для выполнения определенных задач, таких как уведомление пользователей о задержках на их рейсах и удаление задержек, которые больше не действительны. Для этого я подумал, что я буду запускать работника сельдерей в качестве демона, но я столкнулся с огромными проблемами при попытке прочитать документацию о том, как это сделать.

Итак, я выполнил инструкции по настройке моего проекта Django для использования Celery, определения и вызова задач, запуска рабочего процесса и вызова задачи. У меня есть дополнительное приложение на моем проекте под названием celerytest и tasks.py файл, который выглядит следующим образом:

from celery import task 
from flughafen.models import Country, Airline, Aircraft, Airport, Flight, Reservation, CheckIn, Delay 

@task() 
def delete_delays(): 
    # code to retrieve delays which are no longer valid and to delete them 

я могу назвать эту задачу на основе инструкций, данных here. Однако, когда я прочитал инструкции для Running the worker as a daemon, мне непонятно, что делать.

В документации упоминается ссылка для Mac OS X, которая перенаправляет меня на страницу github, где есть некоторые файлы plist, которые я должен загрузить с помощью launchctl. Я скачал их и погрузили их, но они появляются со статусом выхода:

octavio:daemon ohd$ launchctl load org.celeryq.celerybeat.plist 
octavio:daemon ohd$ launchctl load org.celeryq.celeryd.plist 
octavio:daemon ohd$ launchctl load org.celeryq.celerymon.plist 
octavio:daemon ohd$ launchctl list | grep celery 
- 2 org.celeryq.celerymon 
- 2 org.celeryq.celeryd 
- 2 org.celeryq.celerybeat 

Я предполагаю, что мне не хватает какой-то конфигурации, как this или this, но я не знаю, где он должен находиться.

Не могли бы вы предоставить мне советы?

Спасибо.

ответ

2

Я боролся с проблемой. В то время как я не пошел по маршруту запуска, я в конечном итоге получил демонизированных работников, используя утилиту daemonize.

http://software.clapper.org/daemonize/

Вы можете легко установить его варку.

Затем, используя ткань можно перезапустить рабочие так:

def celeryd(): 
    with cd('/usr/local/Cellar/daemonize/1.7.4/sbin'): 
     # Kill existing workers 
     sudo('ps auxww | grep celeryd | grep -v "grep" | awk \'{print $2}\' | xargs kill') 
     # Create new workers 
     sudo('daemonize -u pipeadmin %s/manage.py celery worker' % siteDir)