Использование сельдерея с пилонами - PullRequest
2 голосов
/ 30 апреля 2011

Я пытаюсь настроить сельдерей и пилоны и не могу заставить его работать. Я скачал pylons-celery, но как мне указать, в какой среде Pylons находится celeryconfig.py? Я поместил файл конфигурации в мою папку pylons-app \ celery. Я прочитал этот пост , но там не упоминается, как соединить сельдерей с пилонами. Любые указатели приветствуются - спасибо!

Ответы [ 2 ]

3 голосов
/ 03 мая 2011

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

Чтобы заставить работать сторону сельдерея, вам нужно добавить правильные опции в свой INI-файл, а затемcall paster celeryd development.ini

Для веб-приложения вам просто нужно импортировать celerypylons в environment.py. Тогда вы сможете импортировать и использовать свои задачи из любой точки вашего проекта.

0 голосов
/ 18 июля 2011

Я не совсем уверен, чего вы пытаетесь достичь, но я объясню, как я просто настроил Pylons для работы с сельдереем, и, надеюсь, вы сможете получить что-то от этого.

Моя настройка довольно проста. Я реализовал REST API с помощью Pylons, используя один контроллер под названием jobs. При получении запроса POST действие контроллера отправляет новую задачу в сельдерей, захватывает uuid новых задач и отвечает на исходный запрос uuid. Первоначально я разместил свой файл celeryconfig.py в своем каталоге контроллеров, но как только я развернул яйцо приложения pylons на веб-сервере apache, celeryconfig.py больше не находился автоматически.

Чтобы исправить это, я создал каталог celery на том же уровне, что и каталоги модели и контроллеров, и поместил туда свой файл celeryconfig.py вместе с пустым init .py.

Вот фрагмент кода из контроллера заданий, где я подключаюсь к сельдерею и отправляю новое задание.

    from celery import Celery
    from my_pylons_app.celery import celeryconfig
    celery_app = Celery()
    celery_app.config_from_object(celeryconfig)
    result = celery_app.send_task("process_job", [job_guid], connect_timeout=10)

Мне удалось заставить это работать как с моим внутренним веб-сервером вставки, так и с моим общедоступным веб-сервером apache2.

...