Есть ли способ (в uWSGI или Flask) зарегистрировать функцию, которая будет запускаться у каждого рабочего после нереста, но как можно скорее?
У нас есть приложение для фляги, которое выигрывает от предварительной загрузки нескольких вещей. Следующее вызывает только preload
один раз для 8 рабочих процессов. Первый запрос быстрый, но предварительно загруженные объекты используются совместно, что вызывает ошибки.
app = Flask(__name__)
preload()
Если я использую before_first_request , тогда объекты загружаются в каждый рабочий процесс и ошибок нет, но первый запрос очень медленный.
app = Flask(__name__)
@app.before_first_request
def bfr():
preload()
Я также попытался настроить скрипт фляги. Выполнение команды работает, но очевидно, что объекты загружаются в процессе команды, а не работники uwsgi.
app = Flask(__name__)
manager = Manager(app)
@manager.command
def preload():
...
Полагаю, если мы используем before_first_request
, мы могли бы вручную инициировать запрос после перезапуска uwsgi. Это единственное решение здесь?
edit: только что нашел опцию uswgi hook-post-fork (и другие опции hook). Я собираюсь попробовать это завтра. Может быть, это то, что мне нужно.