Назад | Перейти на главную страницу

Gunicorn не отвечает - преждевременное отключение клиента игнорируется

Это кросс-пост с Проблема с GitHub

Дано:

И wsgi.py из:

def application(env, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    return ["Hello!"]

Бег $ gunicorn wsgi --log-level=debug

Урожайность:

[2017-04-10 18:01:25 +0000] [31956] [ИНФОРМАЦИЯ] Запуск Gunicorn 19.7.1

[2017-04-10 18:01:25 +0000] [31956] [DEBUG] Arbiter загружен

[2017-04-10 18:01:25 +0000] [31956] [INFO] Слушают: http://127.0.0.1:8000 (31956)

[2017-04-10 18:01:25 +0000] [31956] [ИНФОРМАЦИЯ] Использование worker: sync

[2017-04-10 18:01:25 +0000] [31961] [ИНФОРМАЦИЯ] Загрузка рабочего с pid: 31961

[2017-04-10 18:01:25 +0000] [31956] [DEBUG] 1 рабочий

Затем, используя netcat, чтобы протестировать его, например, echo -en "GET /ping HTTP/1.0\n\n\n" | nc localhost 8000 время ожидания с:

[2017-04-10 18:07:36 +0000] [31977] [КРИТИЧЕСКИЙ] ТАЙМ-АУТ РАБОТНИКА (pid: 31982)

[2017-04-10 18:07:36 +0000] [31982] [ИНФОРМАЦИЯ] Рабочий завершает работу (pid: 31982)

[2017-04-10 18:07:36 +0000] [31985] [ИНФОРМАЦИЯ] Загрузочный рабочий с pid: 31985

В качестве альтернативы отправка SIGINT (ctrl-c) экземпляру nc во время ожидания дает:

[2017-04-10 18:01:28 +0000] [31961] [DEBUG] Игнорирование преждевременного отключения клиента. Нет данных после: 'GET / ping HTTP / 1.0 \ n \ n \ n'

С помощью --spew не осветил ничего очевидного.

Хотя я ничего не менял с тех пор, как вчера разместил этот вопрос, сегодня он работает.

Ваше предположение так же хорошо, как и мое, но я закрываю его на том основании, что не могу воспроизвести его.

Если повторится, я открою заново.