2014-11-03 4 views
3

У меня есть предопределенные задачи сельдерея в моем коде, скажет my_proj.tasks.my_celery_taskСельдерея - Активировать задачу через командную строку или HTTP запросы

Я хочу, чтобы активировать задачу с помощью запроса командной строки/HTTP (не через мое приложение).

Я искал документы (варианты пила и завитки), но нет реального примера вызова предопределенной задачи. Как достичь этого?

ответ

12

Предполагая, что вы установили сельдерей с Rabbitmq, вот простой пример.

Определить задачу: my_app.py

from celery import Celery 

app = Celery('tasks', backend='amqp', broker='amqp://') 

@app.task 
def add(x, y): 
    return x + y 

Начало рабочего:

celery worker -l info -A my_app 

Начало цветок

flower -A my_app 

Добавление задачи в очередь через командную строку

curl -X POST -d '{"args":[1,2]}' http://localhost:5555/api/task/async-apply/my_app.add 

или через запросы

import requests, json 
api_root = 'http://localhost:5555/api' 
task_api = '{}/task'.format(api_root) 
args = {'args': [1, 2]} 
url = '{}/async-apply/my_app.add'.format(task_api) 
print(url) 
resp = requests.post(url, data=json.dumps(args)) 
reply = resp.json() 
reply 
+0

Спасибо! Я пытаюсь это точно, но он не возвращается (как будто это стек). Есть ли способ установить тайм-аут, чтобы проверить, почему это стек? Я использую опцию CURL. – Lin

+0

Вы можете установить время ожидания. Простой пример его установки приведен здесь http://nbviewer.ipython.org/github/mher/flower/blob/master/docs/api.ipynb – ChillarAnand

 Смежные вопросы

  • Нет связанных вопросов^_^