(sanic)[ОШИБКА]: соединение потеряно до написания ответа

Я использую Sanic (Python) в качестве веб-сервера и столкнулся с проблемой некоторых запросов. Это возвращает ошибку, когда мы получаем довольно много одновременных запросов. Описание ошибки приведено ниже:

web_1  | 2017-10-03 09:24:49 - (network)[INFO][172.17.0.1:55372]: GET http://localhost:8000/api/order_items/123456  200 38
web_1  | 2017-10-03 09:24:50 - (network)[INFO][172.17.0.1:55382]: GET http://localhost:8000/api/order_items/123456 200 38
web_1  | 2017-10-03 09:24:55 - (network)[INFO][172.17.0.1:55392]: GET http://localhost:8000/api/order_items/123456 200 38
web_1  | 2017-10-03 09:24:56 - (sanic)[ERROR]: Connection lost before response 2343 written @ ('172.17.0.1', 55402)
web_1  | 2017-10-03 09:24:56 - (network)[INFO][172.17.0.1:55412]: GET http://localhost:8000/api/order_items/123456 200 38
web_1  | 2017-10-03 09:24:57 - (sanic)[ERROR]: Connection lost before response 2343 written @ ('172.17.0.1', 55424)
web_1  | 2017-10-03 09:24:57 - (network)[INFO][172.17.0.1:55430]: GET http://localhost:8000/api/order_items/123456 200 38

Вот где Sanic сообщает об этой ошибке: https://github.com/channelcat/sanic/blob/master/sanic/server.py

Так что, насколько я понимаю, HTTP-соединение закрывается, прежде чем Sanic сможет написать в него, что нормально, но я должен иметь возможность переопределить поведение и скрыть ошибку, если я хочу что-то, с чем мне нужна помощь

2 ответа

Решение

Проблема была навсегда исправлена ​​в Sanic, но еще не выпущена. Так что вот временное решение, пока Sanic не выпустит 0.6.1.

class NoConnectionLostFilter(logging.Filter):
""" while issue not resolved https://github.com/channelcat/sanic/issues/959 """
def filter(record):
    return not record.getMessage().startswith('Connection lost before response written')

logging.getLogger('root').addFilter(NoConnectionLostFilter)

Кредиты на решение: https://github.com/samael500 Ссылка на выпуск Github: https://github.com/channelcat/sanic/issues/959

Просто отключите режим отладки (вы должны это делать, когда вы в работе), и сообщение об ошибке исчезнет.

Другие вопросы по тегам