Add troubleshooting.md

This commit is contained in:
38elements 2017-05-04 23:43:17 +09:00
parent 7cf3d49f00
commit 098b79a8bf
2 changed files with 55 additions and 0 deletions

View File

@ -24,6 +24,7 @@ Guides
sanic/testing sanic/testing
sanic/deploying sanic/deploying
sanic/extensions sanic/extensions
sanic/troubleshooting
sanic/contributing sanic/contributing

View File

@ -0,0 +1,54 @@
# Troubleshooting
## ERROR: NoneType: None in console
The message `ERROR: NoneType: None` is caused by timeout error caused by request not occuring in Keep-Alive.
There are two methods not to display a message.
* Invalidating Keep-Alive.
```python
from sanic.config import Config
Config.KEEP_ALIVE = False
```
* Setting custom protocol.
```python
from time import time
from sanic import Sanic
from sanic.response import json
from sanic.config import Config
from sanic.server import HttpProtocol
from sanic.exceptions import RequestTimeout
class CustomHttpProtocol(HttpProtocol):
def connection_timeout(self):
current_time = time()
time_elapsed = current_time - self._last_request_time
if time_elapsed < self.request_timeout:
time_left = self.request_timeout - time_elapsed
self._timeout_handler = (
self.loop.call_later(time_left, self.connection_timeout))
else:
if self._request_handler_task:
self._request_handler_task.cancel()
if self._total_request_size == 0:
self.transport.close()
else:
exception = RequestTimeout('Request Timeout')
self.write_error(exception)
app = Sanic()
@app.route("/")
async def handler(request):
return json({"hello": "world"})
if __name__ == "__main__":
app.run(host="127.0.0.1", port=8000, protocol=CustomHttpProtocol)
```