3
我有一個預定義的芹菜任務在我的代碼,說my_proj.tasks.my_celery_task
芹菜 - 激活通過命令行任務或HTTP請求
我想通過命令行/ HTTP請求,以啓動任務(不通過我的應用程序)。
我搜索了文檔(鋸花和捲曲選項),但沒有一個真正的好例子來調用預定義的任務。如何實現這一目標?
我有一個預定義的芹菜任務在我的代碼,說my_proj.tasks.my_celery_task
芹菜 - 激活通過命令行任務或HTTP請求
我想通過命令行/ HTTP請求,以啓動任務(不通過我的應用程序)。
我搜索了文檔(鋸花和捲曲選項),但沒有一個真正的好例子來調用預定義的任務。如何實現這一目標?
假設你已經用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
謝謝!我正在嘗試,但它不會返回(就像它是堆棧)。無論如何設置超時檢查爲什麼它是堆棧?我正在使用CURL選項。 – Lin 2014-11-03 09:08:43
您可以設置超時。一個簡單的例子來設置它在這裏http://nbviewer.ipython.org/github/mher/flower/blob/master/docs/api.ipynb – ChillarAnand 2014-11-03 09:18:19