如何在python 3 Google App Engine标准环境中进行后台工作?

时间:2018-12-11 18:20:16

标签: python-3.x google-app-engine google-app-engine-python

我在我的appengine应用(/start)上有一个端点,用于启动进程。在python 2环境中,我使用deferred在请求上下文之外运行进程。在appengine flex上,您可以run background threads驻留在请求环境之外。乍一看,我以为这是python 3标准环境的also true,但仔细看,它包含以下注释:

  

但是请注意,在处理入站请求后,新线程或进程可能不会运行。

这是否意味着一旦请求得到处理,我启动的后台线程就会被杀死?如果是这样,开始后台工作的最佳方法是什么?

我可以通过在云任务中创建队列并腌制所有内容来重新创建deferred库,但这是最后的选择。

1 个答案:

答案 0 :(得分:1)

来自Task Queue指南的Understanding differences between Python 2 and Python 3 on the App Engine standard environment部分:

  

您可以使用Cloud Tasks (beta)访问“任务队列”服务。

     

在适合拉入队列的情况下,例如排队任务   或将由独立工作人员提取和处理的消息,   Cloud Pub/Sub可能是一个很好的选择。云发布/订阅优惠   类似的功能和交付保证。

是的,推荐使用云任务。

但是您实际上不需要重新创建deferred库-该库建立在推送任务队列的顶部。 deferred库相对于push任务的唯一优势是,您不必预先注册任务处理程序(只需传递要执行的函数及其args)。但这对于云任务不是正确的-它们确实需要GAE handlers