如何正确调用任务?

时间:2013-06-14 21:09:25

标签: django django-celery

我在我的应用程序中配置了django-celery。这是我的任务:

from celery.decorators import task
import simplejson as json
import requests

@task
def call_api(sid):
    try:
        results = requests.put(
            'http://localhost:8000/api/v1/sids/'+str(sid)+"/",
            data={'active': '1'}
        )
        json_response = json.loads(results.text)
    except Exception, e:
        print e
    logger.info('Finished call_api')

当我添加我的观点时:

call_api.apply_async(
                (instance.service.id,),
                eta=instance.date
            )
celeryd告诉我:

Got task from broker: my_app.tasks.call_api[755d50fd-0f0f-4861-9a18-7f4e4563290a]
Task my_app.tasks.call_api[755d50fd-0f0f-4861-9a18-7f4e4563290a] succeeded in 0.00513911247253s: None

所以应该是好的,但没有任何事情发生......例如,没有电话:

 http://localhost:8000/api/v1/sids/1/

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您是否将芹菜作为一个单独的过程运行? 例如在Ubuntu中使用该命令运行 sudo python manage.py celeryd

直到您将celery(或django芹菜)作为一个单独的进程运行,作业将存储在数据库中(或队列或您配置的持久性机制 - 通常在settings.py中)。