Python 谷歌应用引擎后台线程与任务

Python 谷歌应用引擎后台线程与任务,python,multithreading,google-app-engine,Python,Multithreading,Google App Engine,在后台创建线程和为其创建任务有什么区别 例如,对于线程: tid = background_thread.start_new_background_thread(f, ["foo", "bar"]) 然后是一项任务: taskqueue.add(url='/worker', params={'key': key}) 有什么区别?什么时候一个会被用在另一个上面?与后台线程相比,使用taskqueue是否有任何优势(似乎更容易设置)?最大的区别是任务独立于任何其他代码运行,您可以轻松管理它们的处

在后台创建线程和为其创建任务有什么区别

例如,对于线程:

tid = background_thread.start_new_background_thread(f, ["foo", "bar"])
然后是一项任务:

taskqueue.add(url='/worker', params={'key': key})

有什么区别?什么时候一个会被用在另一个上面?与后台线程相比,使用taskqueue是否有任何优势(似乎更容易设置)?

最大的区别是任务独立于任何其他代码运行,您可以轻松管理它们的处理速度,失败时可以自动重试,并且您可以使用不同的选项设置它们,如ETA


当然,您可以自己完成所有这些工作,但您必须编写和测试大量代码。

可以同时运行的后台线程数量限制很低。而对于任务,请检查仪表板上的任务配额。后台线程仅在其运行的实例存在且请求或任务的生命周期内运行,除非您使用托管虚拟机。从正面请求生成的线程只能生存60秒,或者直到请求完成(这是第一次)。任务上的后台线程只能持续任务的生命周期或10分钟,这是第一次。在托管虚拟机出现之前,任何特定线程都无法运行更长时间。