0

Quartasyncioは、Python のコルーチン システムの上に Flask API を再実装する Python Web フレームワークです。私の特定のケースでは、着信イベントのソースが 1 つだけではなく、非同期ループを継続するイベントのソースが2 つあると想定される Quart Websocket エンドポイントがあります。

1 つのイベント ソースの例:

from quart import Quart, websocket
app = Quart(__name__)

@app.websocket("/echo")
def echo():
    while True:
        incoming_message = await websocket.receive()
        await websocket.send(incoming_message)

https://pgjones.gitlab.io/quart/から取得

この例には、受信メッセージ ストリームという1 つのソースがあります。await websocket.receive()しかし、2 つの可能性のある情報源があり、1 つは であり、もう 1 つは の線に沿ったものである場合、正しいパターンは何でしょうかawait system.get_next_external_notification()

どちらかが届いたら、websocket メッセージを送信したいと思います。
を使用する必要があると思いますがasyncio.wait(..., return_when=FIRST_COMPLETED)、データを見逃さないようにするにはどうすればよいですか (つまりwebsocket.receive()system.get_next_external_notification()両方がほぼ同時に終了する競合状態の場合)。この場合の正しいパターンは何ですか?

4

1 に答える 1