我的许多处理程序都将任务添加到任务队列以执行非关键后台处理。由于此处理并不重要,如果对taskqueue.add()的调用抛出异常,我的代码就会忽略它。
今晚任务队列似乎已经停止了大约半个小时。虽然我的处理程序正确地忽略了失败,但是taskqueue.add()调用超时需要大约5秒钟,然后继续处理页面的其余部分。因此,这使我的网站运行非常缓慢。
那么,是否可以异步排队任务 - 这意味着一种添加任务的方法,而不必等待添加是否成功?
或者,有没有办法将超时从5秒减少到例如1秒?
感谢。
答案 0 :(得分:1)
我认为你无法做任何事情,因为add
方法下面的RPC调用是一个同步阻塞 API调用。
您可以尝试使用Capabilities API添加一些支票。
答案 1 :(得分:1)
您可以使用新的任务队列方法create_rpc
和add_async
。如果您不关心添加是否成功,只需调用add_async
并忽略结果。如果您关心,但只想等待1秒,请在调用create_rpc
时设置截止日期,并将返回值用作add_async
的RPC参数。致电get_result
以确定任务是否已成功添加。
答案 2 :(得分:0)
我很确定GAE宣布TQ添加将与下一版本(实验性功能)异步。