Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python AppEngine中长期运行的I/O绑定进程:任务还是线程?_Python_Google App Engine_Asynchronous - Fatal编程技术网

Python AppEngine中长期运行的I/O绑定进程:任务还是线程?

Python AppEngine中长期运行的I/O绑定进程:任务还是线程?,python,google-app-engine,asynchronous,Python,Google App Engine,Asynchronous,我的Python AppEngine应用程序与速度较慢的外部系统交互(想想从窄带连接接收数据)。半小时的互动是一种常态。我需要并行运行10-15个这样的交互 我的选项是后台任务和“后台线程”(不是普通的Python线程)。理论上它们看起来差不多。因为后台线程不在本地开发服务器上运行,所以我会坚持使用任务 一种方法比另一种方法有什么显著的优势吗?这取决于“交互”需要多长时间。Appengine对每个HTTP请求的限制为60秒。 如果您的外部系统定期发送数据,那么我建议您将数据分成小块,以遵守60秒

我的Python AppEngine应用程序与速度较慢的外部系统交互(想想从窄带连接接收数据)。半小时的互动是一种常态。我需要并行运行10-15个这样的交互

我的选项是后台任务和“后台线程”(不是普通的Python线程)。理论上它们看起来差不多。因为后台线程不在本地开发服务器上运行,所以我会坚持使用任务


一种方法比另一种方法有什么显著的优势吗?

这取决于“交互”需要多长时间。Appengine对每个HTTP请求的限制为60秒。
如果您的外部系统定期发送数据,那么我建议您将数据分成小块,以遵守60秒的限制。将这些数据聚合为blob,然后使用任务定期处理数据

后台线程的挂起时间不能超过生成它们的请求处理程序。因此,对于运行时间较长的线程,您必须使用后端。任务可能比启动它们的请求更合适。@TimHoffman:。否则我不会考虑它们。正如我在我的评论和文档中所说的,长时间运行的后台线程可以使用“后端”,而不是面向前面的请求(正常前端实例)。前端运行时环境说,可以使用线程或线程模块在Python 2.7中创建线程。请注意,当请求结束时,线程将由运行时连接,因此线程不能在请求结束后运行。在后端服务器上,您可以生成后台线程;后台线程可以“超过”生成它的请求。@TimHoffman:只是为了确保:我的问题是关于特定的GAE“后台线程”,而不是普通的Python线程。正如问题所述,我需要大约30-40分钟,此时运行的代码最好不要中断。在我离开的地方重新启动是可能的,但每60秒重新启动一次。。。嗯,也许不会那么浪费。无论如何,任务允许60分钟。