加载大泡菜时,Flask应用中的Google App Engine Gunicorn工作者超时?

问题描述 投票:0回答:1

我有一个350 MB的Sklearn泡菜文件,我想在Flask应用程序启动时加载它。

我使用_pickle,因为在文档中提到它具有更快的加载时间:

import _pickle as pickle

start = timeit.default_timer()
with open("pickle/pipeline.pkl", 'rb') as f: 
        # ~350MB file
        pipeline = pickle.load(f)
        stop = timeit.default_timer()
        print('Time: ', stop - start)

泡菜在本地加载5-12秒,但在Google App Engine F4(1GB RAM)实例上,gunicorn工作程序超时。

Google App Engine日志:

A 2019-10-20T20:07:55Z [2019-10-20 20:07:55 +0000] [14] [INFO] Booting worker with pid: 14

A 2019-10-20T20:11:02Z [2019-10-20 20:04:14 +0000] [1] [CRITICAL] WORKER TIMEOUT (pid:14)

我尝试通过在app.yaml文件中添加-t标志来增加工作程序超时,如下所示,但仍然无法正常工作:

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

liveness_check:
  initial_delay_sec: 500

readiness_check:
  app_start_timeout_sec: 500

我什至尝试使用eventlet,但都行不通:

gunicorn -t 120 -b :$PORT app:app --worker-class eventlet --workers 3 
python flask google-cloud-platform pickle gunicorn
1个回答
0
投票

加载350 MB泡菜数据文件的过程耗时太长,App Engine认为您的实例已失败。您的容器启动时间超过三分钟。

您有一个无法轻易解决的问题。最大文件大小为32 MB(Go应用程序为64 MB)。您正在将文件下载到内存中,但是您的实例下载时间太长。

解决方案:我将使用诸如Cloud Run之类的其他服务,您可以在其中将泡菜数据文件嵌入容器映像中,从而无需下载。

© www.soinside.com 2019 - 2024. All rights reserved.