message for i in res_str: if await request.is_disconnected(): print("连接已中断") break yield { "event": "message", "retry": 15000, # milisecond "data": i } await asyncio.sleep(0.1) return EventSourceResponse(event_generator(req)) 代码和上文的GET很像,只不过在GET方法中,是使用的默...
whilenotself._stream_consumed:message=awaitself._receive()ifmessage["type"]=="http.request":body=message.get("body",b"")ifnotmessage.get("more_body",False):self._stream_consumed=Trueifbody:yieldbodyelifmessage["type"]=="http.disconnect":# pragma: no branchself._is_disconnected=Trueraise...
os.system('pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sse-starlette')fromsse_starlette.sseimportEventSourceResponseimportasyncio@router.get("/sse")asyncdefroot(request: Request):asyncdefevent_generator(request: Request):whileTrue:ifawaitrequest.is_disconnected():print("连接已中断")br...
@router.get("/sse") async def root(request: Request): async def event_generator(request: Request): while True: if await request.is_disconnected(): print("连接已中断") break sse_test_data = gl.gl_Redis.hgetall('sse:test:data') sse_test_data['warn_site'] = sse_test_data['warn_sit...
(request: Request): while True: if await request.is_disconnected(): print("连接已中断") break sse_test_data = gl.gl_Redis.hgetall('sse:test:data') sse_test_data['warn_site'] = sse_test_data['warn_site'].split(',') if sse_test_data.get('warn_site') else [] yield { "event...
is_disconnected(): raise e print("remote disconnected") async def dispatch(self, request, call_next): return await call_next(request) class CustomHeaderMiddleware2(BaseHTTPMiddleware): async def dispatch(self, request, call_next): return await call_next(request) all_middleware = [ Middleware(...
@router.get("/sse")asyncdefroot(request:Request):asyncdefevent_generator(request:Request):whileTrue:ifawaitrequest.is_disconnected():print("连接已中断")breaksse_test_data=gl.gl_Redis.hgetall('sse:test:data')sse_test_data['warn_site']=sse_test_data['warn_site'].split(',')ifsse_test_da...
(request:Request,model_name:str='qwen:latest',prompt:str='请用中文介绍下中国古代四大名著之一的《红楼梦》'):asyncdefevent_generator():asyncforeventinstream_ollama_response(model_name,prompt):yieldeventifawaitrequest.is_disconnected():breakreturnEventSourceResponse(event_generator())if__name__=='...
middleware('http') async def before_each_endpoint(request: Request, call_next: RequestResponseEndpoint): response = await call_next(request) if await request.is_disconnected(): # hide `anyio.BrokenResourceError` return _hide_anyio_BrokenResourceError return response But I don’t know the hidden...
WebSocket disconnected state is not propagated to the application code (proper closures, ping timeouts)