Проверить, сбросил ли пользователь соединение

Пользователь запрашивает данные, и ждет какое-то время, пока подготавливаются данные на сервере. Вдруг происходит ситуация, что пользователь сбрасывает соединение. Вдруг у него пропадает интернет или еще что, как отловить это программно?


Ответы (1 шт):

Автор решения: eri

Должно сработать connection_lost

import asyncio
from sanic import Sanic, response

app = Sanic()

@app.route('/')
async def handler(request):
    try:
        await asyncio.sleep(10)
    except asyncio.CancelledError as e:
        print('Not OK') # отловили тут
        raise e
    return response.text('OK')

app.run()

Асинхронная задачка должна райзнуть asyncio.CancelledError, если работа приложения блокирующая - используй экзекутор.

→ Ссылка