python-如何从celery任务异步调用url

我将芹菜与龙卷风一起使用,我想知道如何在任务中异步调用url.

我正在寻找以下方面的东西:

@celery.task
def my_task(data):
    def handle_response(response):
        if response.error:
            print "error"
        else:
            print "success"

    http_client = httpclient.AsyncHTTPClient()
    http_client.fetch('some url', handle_response, method='POST', body=data)

要么:

@celery.task
@gen.coroutine
def my_task(data):
    http_client = httpclient.AsyncHTTPClient()
    response = yield http_client.fetch('some url', method='POST', body=data)
    raise gen.Result(response.body)

我现在的问题是我不去响应处理程序.
使用HttpClient可以,但是由于它阻塞了服务器,因此我正在寻找一种非阻塞解决方案.

顺便说一句,我的经纪人是redis,我希望保留它(龙卷风芹菜回调仅在提供解决方案的情况下才适用于pika)

解决方法:

我认为您的方法是一项开销. Celery已经可以异步执行作业了,那么,使芹菜任务执行阻止URL调用的最佳方法是什么呢?在异步任务中添加异步url调用是一种开销.我希望这有帮助.

上一篇:芹菜:卡在无限地重复超时(超时等待UP消息)


下一篇:芹菜不运行和弦回调