我将芹菜与龙卷风一起使用,我想知道如何在任务中异步调用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调用是一种开销.我希望这有帮助.