App Engine:是否可以异步排队任务?

时间:2011-03-28 14:13:54

标签: google-app-engine task-queue

我的许多处理程序都将任务添加到任务队列以执行非关键后台处理。由于此处理并不重要,如果对taskqueue.add()的调用抛出异常,我的代码就会忽略它。

今晚任务队列似乎已经停止了大约半个小时。虽然我的处理程序正确地忽略了失败,但是taskqueue.add()调用超时需要大约5秒钟,然后继续处理页面的其余部分。因此,这使我的网站运行非常缓慢。

那么,是否可以异步排队任务 - 这意味着一种添加任务的方法,而不必等待添加是否成功?

或者,有没有办法将超时从5秒减少到例如1秒?

感谢。

3 个答案:

答案 0 :(得分:1)

我认为你无法做任何事情,因为add方法下面的RPC调用是一个同步阻塞 API调用。

您可以尝试使用Capabilities API添加一些支票。

答案 1 :(得分:1)

您可以使用新的任务队列方法create_rpcadd_async。如果您不关心添加是否成功,只需调用add_async并忽略结果。如果您关心,但只想等待1秒,请在调用create_rpc时设置截止日期,并将返回值用作add_async的RPC参数。致电get_result以确定任务是否已成功添加。

答案 2 :(得分:0)

我很确定GAE宣布TQ添加将与下一版本(实验性功能)异步。