commit
a0d8418b40
|
@ -342,8 +342,10 @@ class HttpProtocol(asyncio.Protocol):
|
||||||
self.url, type(response))
|
self.url, type(response))
|
||||||
self.write_error(ServerError('Invalid response type'))
|
self.write_error(ServerError('Invalid response type'))
|
||||||
except RuntimeError:
|
except RuntimeError:
|
||||||
|
if self._debug:
|
||||||
logger.error('Connection lost before response written @ %s',
|
logger.error('Connection lost before response written @ %s',
|
||||||
self.request.ip)
|
self.request.ip)
|
||||||
|
keep_alive = False
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.bail_out(
|
self.bail_out(
|
||||||
"Writing response failed, connection closed {}".format(
|
"Writing response failed, connection closed {}".format(
|
||||||
|
@ -379,8 +381,10 @@ class HttpProtocol(asyncio.Protocol):
|
||||||
self.url, type(response))
|
self.url, type(response))
|
||||||
self.write_error(ServerError('Invalid response type'))
|
self.write_error(ServerError('Invalid response type'))
|
||||||
except RuntimeError:
|
except RuntimeError:
|
||||||
|
if self._debug:
|
||||||
logger.error('Connection lost before response written @ %s',
|
logger.error('Connection lost before response written @ %s',
|
||||||
self.request.ip)
|
self.request.ip)
|
||||||
|
keep_alive = False
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.bail_out(
|
self.bail_out(
|
||||||
"Writing response failed, connection closed {}".format(
|
"Writing response failed, connection closed {}".format(
|
||||||
|
@ -407,6 +411,7 @@ class HttpProtocol(asyncio.Protocol):
|
||||||
version = self.request.version if self.request else '1.1'
|
version = self.request.version if self.request else '1.1'
|
||||||
self.transport.write(response.output(version))
|
self.transport.write(response.output(version))
|
||||||
except RuntimeError:
|
except RuntimeError:
|
||||||
|
if self._debug:
|
||||||
logger.error('Connection lost before error written @ %s',
|
logger.error('Connection lost before error written @ %s',
|
||||||
self.request.ip if self.request else 'Unknown')
|
self.request.ip if self.request else 'Unknown')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
@ -1,11 +1,17 @@
|
||||||
import uuid
|
import uuid
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from io import StringIO
|
||||||
from importlib import reload
|
from importlib import reload
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
from unittest.mock import Mock
|
||||||
|
|
||||||
|
import sanic
|
||||||
from sanic.response import text
|
from sanic.response import text
|
||||||
from sanic.log import LOGGING_CONFIG_DEFAULTS
|
from sanic.log import LOGGING_CONFIG_DEFAULTS
|
||||||
from sanic import Sanic
|
from sanic import Sanic
|
||||||
from io import StringIO
|
|
||||||
import logging
|
|
||||||
|
|
||||||
logging_format = '''module: %(module)s; \
|
logging_format = '''module: %(module)s; \
|
||||||
function: %(funcName)s(); \
|
function: %(funcName)s(); \
|
||||||
|
@ -71,3 +77,31 @@ def test_logging_pass_customer_logconfig():
|
||||||
|
|
||||||
for fmt in [h.formatter for h in logging.getLogger('sanic.access').handlers]:
|
for fmt in [h.formatter for h in logging.getLogger('sanic.access').handlers]:
|
||||||
assert fmt._fmt == modified_config['formatters']['access']['format']
|
assert fmt._fmt == modified_config['formatters']['access']['format']
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('debug', (True, False, ))
|
||||||
|
def test_log_connection_lost(debug, monkeypatch):
|
||||||
|
""" Should not log Connection lost exception on non debug """
|
||||||
|
app = Sanic('connection_lost')
|
||||||
|
stream = StringIO()
|
||||||
|
root = logging.getLogger('root')
|
||||||
|
root.addHandler(logging.StreamHandler(stream))
|
||||||
|
monkeypatch.setattr(sanic.server, 'logger', root)
|
||||||
|
|
||||||
|
@app.route('/conn_lost')
|
||||||
|
async def conn_lost(request):
|
||||||
|
response = text('Ok')
|
||||||
|
response.output = Mock(side_effect=RuntimeError)
|
||||||
|
return response
|
||||||
|
|
||||||
|
with pytest.raises(ValueError):
|
||||||
|
# catch ValueError: Exception during request
|
||||||
|
app.test_client.get('/conn_lost', debug=debug)
|
||||||
|
|
||||||
|
log = stream.getvalue()
|
||||||
|
|
||||||
|
if debug:
|
||||||
|
assert log.startswith(
|
||||||
|
'Connection lost before response written @')
|
||||||
|
else:
|
||||||
|
assert 'Connection lost before response written @' not in log
|
||||||
|
|
Loading…
Reference in New Issue
Block a user