У меня есть файл-файл Sklearn 350 МБ, который я хочу загрузить при запуске приложения 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 (1 ГБ ОЗУ) рабочий 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)
Я попытался увеличить время ожидания работника, добавив флаг -t в файл app.yaml
, как показано ниже, и все еще не работает:
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