import proj.tasks
import time
import sys
import socket
import logging
import datetime
lat_to, ts = proj.tasks.timeme(time.time()) <---- blocking call
lat_from = time.time() - ts
print lat_to, lat_from
芹菜任务块,所以我不能利用很多工人。是否可以将其设置为非阻塞调用?
注意:我将龙卷风芹菜视为非阻塞芹菜客户端的选项,但我不确定我是否喜欢这种方法,因为我需要启动龙卷风芹菜网络服务器。
调用芹菜任务时,该方法同步执行。 任务队列的强大功能是将任务放在队列中,让工作人员异步完成工作。
您可以使用该任务执行此操作。delay
方法。
我不确定延迟在内部做了什么,但它返回得非常快,并且当您调用它时,您的方法的工作实际上并没有完成,您的任务只是被放在工作队列中。
龙卷风芹菜在我这边工作正常,但默认情况下它会在回调之前等待任务的结果,
class GenAsyncHandler(web.RequestHandler):
@asynchronous
@gen.coroutine
def get(self):
response = yield gen.Task(tasks.sleep.apply_async, args=[3])
self.write(str(response.result))
self.finish()
如果你想有如下任务回调选项,你可以试试我的fork
- 任务发送后
- 任务发送和确认后
- 适合原汁原味的芹菜task.apply_async(( 首先获取 AsyncResult 的行为,然后AsyncResult.get(( 在龙卷风异步中获取实际任务结果时尚