aioudp
v1.0.1
非同期 UDP 用のより優れた API
UDP 用の WebSocket のような API
以下にエコー サーバーの例を示します。
import asyncio
import signal
import aioudp
async def main ():
async def handler ( connection ):
async for message in connection :
await connection . send ( message )
# Optional. This is for properly exiting the server when Ctrl-C is pressed
# or when the process is killed/terminated
loop = asyncio . get_running_loop ()
stop = loop . create_future ()
loop . add_signal_handler ( signal . SIGTERM , stop . set_result , None )
loop . add_signal_handler ( signal . SIGINT , stop . set_result , None )
# Serve the server
async with aioudp . serve ( "localhost" , 9999 , handler ):
await stop # Serve forever
if __name__ == '__main__' :
asyncio . run ( main ())
そしてサーバーに接続するクライアント:
import asyncio
import aioudp
async def main ():
async with aioudp . connect ( "localhost" , 9999 ) as connection :
await connection . send ( b"Hello world!" )
assert await connection . recv () == b"Hello world!"
if __name__ == '__main__' :
asyncio . run ( main ())
このプロジェクトはpip
経由で取得できます
$ pip install aioudp
または、Poetry を使用している場合
$ poetry add aioudp
注記
このライブラリは、 async
/ await
ベースの API 以外に、 asyncio
の既存の UDP インターフェイスに対する他の抽象化を提供しません。これは、QUIC などの暗黙的なプロトコルがこのライブラリで扱われないことを意味します。独自のライブラリを作成するか、別のライブラリを探す必要があります。
async
IO 実装を抽象化するための、より広範な非同期ネットワーキングおよび同時実行ライブラリです。同様の API があります (このライブラリを作成するまでは知りませんでした)著作権 © 2021、ブライアン・フー
このプロジェクトは、GNU GPL v3+ に基づいてライセンスされています。
つまり、これは、それを使って何でもできる (配布、変更、販売) ことができますが、変更を公開する場合は、ソース コードとビルド手順をすぐに利用できるようにする必要があることを意味します。
このプロジェクトを使用している企業で例外をご希望の場合は、[email protected] までメールでご連絡ください。ご相談させていただきます。