我有一个连接到RabbitMQ的芹菜工作者,以便客户可以向工作人员发出请求。对于请求,我使用celery函数apply_async
和apply
来远程调用函数。
我使用参数expire
来确定任务等待完成的时间。我这样做是希望处理挂起的任务,但在我的例子中,这不起作用。当我关闭工作程序运行此示例时,调用程序将无限期挂起。
这是一个示例,其中函数hello
远程运行,test_hello
调用此函数:
def test_hello():
hosts = ["host1", "host2", "host3"]
for host in hosts:
print "%s\n" % host
output = myapp.hello.apply_async(queue=host, args=(host,), expires=70)
print output.get()
@task(name='myapp.hello')
def hello(hostname):
""" dummy function that returns a simple message """
time.sleep(60)
return "Hello %s" % hostname
if __name__ == "__main__":
print "test_hello"
test_hello()
我的问题是,我希望在工作人员关闭时或者当请求挂起因为工作人员在呼叫过程中崩溃时捕获错误。我怎样才能发现这些错误?