【发布时间】:2019-10-20 20:28:15
【问题描述】:
我有一个 350 MB 的 Sklearn pickle 文件,我想在 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)
pickle 在本地加载需要 5-12 秒,但在 Google App Engine F4 (1GB RAM) 实例上,gunicorn worker 超时。
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