在FLEXIBLE应用程序引擎中执行长时间运行任务的任务队列

时间:2016-09-16 20:29:28

标签: python google-app-engine app-engine-flexible

我正在使用Flexible App Engine和Python3构建应用程序。在标准的appengine中,如果你需要运行一个超过60s的任务,你可以使用taskqueue,或者我已成功完成的延迟库(taskqueue的抽象)。

Flexible App Engine不再支持包含这些功能的appengine api。相反,功能正在迁移到google-cloud库(https://googlecloudplatform.github.io/google-cloud-python/)而不是https://cloud.google.com/appengine/docs/flexible/python/migrating-an-existing-app)。

您仍然可以使用python-compat配置来访问这些appengine api功能,该配置仅限于Python 2.

有没有办法在Flexible Appengine中运行长任务(排队)而不必使用python-compat配置?

1 个答案:

答案 0 :(得分:0)

我的问题几乎完全相同Increase time to run code for Google flexible app engine delaying DeadlineExceededError ,认为问题是由于这个截止日期的错误

但是因为这个问题询问了任务问题等,我想也许答案是不同的。实际上,它归结为这样一个事实:在灵活的环境中使用python3,这个任务运行时间超过60秒不是约束,因为所有代码都在docker容器中运行。因此,甚至可能不需要运行任务队列等。

检查gunicorn入口点配置可能是值得的。在app.yaml文件中添加-t选项以及超时前允许的秒数。

runtime: python
env: flex
entrypoint: gunicorn -t 120 -b :$PORT main:app

这解决了我的问题,现在一个更长的代码在没有退出的情况下运行。