Ensure middleware executes once per request timeout (#2615)

This commit is contained in:
Adam Hopkins
2022-12-07 23:07:17 +02:00
committed by GitHub
parent f32437bf13
commit d4041161c7
3 changed files with 37 additions and 4 deletions

View File

@@ -1,6 +1,6 @@
import logging
from asyncio import CancelledError
from asyncio import CancelledError, sleep
from itertools import count
from sanic.exceptions import NotFound
@@ -318,6 +318,32 @@ def test_middleware_return_response(app):
resp1 = await request.respond()
return resp1
_, response = app.test_client.get("/")
app.test_client.get("/")
assert response_middleware_run_count == 1
assert request_middleware_run_count == 1
def test_middleware_run_on_timeout(app):
app.config.RESPONSE_TIMEOUT = 0.1
response_middleware_run_count = 0
request_middleware_run_count = 0
@app.on_response
def response(_, response):
nonlocal response_middleware_run_count
response_middleware_run_count += 1
@app.on_request
def request(_):
nonlocal request_middleware_run_count
request_middleware_run_count += 1
@app.get("/")
async def handler(request):
resp1 = await request.respond()
await sleep(1)
return resp1
app.test_client.get("/")
assert request_middleware_run_count == 1
assert response_middleware_run_count == 1