Gunicorn: несколько фоновых рабочих потоков - PullRequest
0 голосов
/ 16 июня 2020

Настройка : Мое приложение использует несколько рабочих процессов для параллельной обработки элементов. Обработка этих элементов требует много ресурсов процессора, поэтому мне нужны рабочие процессы. Приложение будет использоваться через Flask API и GUnicorn. Сам GUnicorn имеет несколько рабочих процессов для параллельной обработки запросов. В API Flask данные запроса помещаются в очередь, и рабочие процессы моего фонового приложения берут эти данные из этой очереди. интенсивный, и приложение должно соответствовать определенным требованиям к скорости. Поэтому я хотел бы запускать фоновые рабочие процессы при запуске приложения. Чтобы избежать смешивания результатов, мне нужно n фоновых рабочих процессов для каждого рабочего GUnicorn.

Вопрос : Как я могу определить во время строительства, сколько фоновых рабочих мне нужно создать и как Можно ли связать этих рабочих с рабочими GUnicorn?

Подход : я могу прочитать количество рабочих GUnicorn из gunicorn_config.py, импортировав переменную workers. Однако на данный момент я не знаю идентификаторов рабочих процессов GUnicorn. Есть ли у них внутренние идентификаторы, которые я мог бы использовать на этом этапе (например, GUnicorn worker # 1, ...)?

1 Ответ

1 голос
/ 16 июня 2020

Вы должны знать (и учитывать), что воркер-пулеметчик может быть остановлен в любой момент (например, из-за ошибки sh обработчика запроса или тайм-аута обработки). Это означает, что привязка вашего конкретного рабочего к конкретному процессу пулеметчика не может быть постоянной.

Если вы хотите связать своего воркера с конкретным воркером-пулеметом, то повторное связывание должно происходить каждый раз при перезапуске воркера-пулеметчика.

Один из подходов - определить собственный обработчик post_fork и / или port_fork_init , который будет выполнять эту проводку.

Сначала вы можете запустить необходимое количество рабочих, а затем post_fork обработчик может «заимствовать» (или, как вы его называете, «ссылка») ) их только что созданному работнику.

...