GAE flex默认使用gunicorn作为入口点,这很好,除了我有一个需要很长时间处理的功能(在数据库中抓取网站和故事数据)和gunicorn默认在30秒时出现,然后一个新工人开始完成任务,依此类推。
我可以将枪炮超时设置为20分钟,但看起来并不优雅。有没有办法在gunicorn的“外部”运行这些后端功能,或者也许是我没想过的枪支配置?没有客户端,所以很长时间没有问题。
我的 app.yaml 文件目前看起来像这样:
runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app
runtime_config:
python_version: 2
# This sample incurs costs to run on the App Engine flexible environment.
# The settings below are to reduce costs during testing and are not appropriate
# for production use. For more information, see:
# https://cloud.google.com/appengine/docs/flexible/python/configuring-your app-with-app-yaml
manual_scaling:
instances: 1
resources:
cpu: 1
memory_gb: 3
disk_size_gb: 10
答案 0 :(得分:0)
您可以使用async worker-class,然后您无需将超时设置为20分钟。默认的工作程序类是sync。有关工人here的文档。
使用eventlet异步工作程序(如果使用Google客户端库,则不建议使用gevent)
pip install eventlet
然后在您的gunicorn实例化中将worker-class ='eventlet'设置为$ [cores] x 2 +1(这只是google docs中的建议)。 例如:
CMD exec gunicorn --worker-class eventlet --workers 3 -b :$PORT main:app
或者,使用pubsub和worker使用here描述的实现。