Eine bessere API für asynchrones UDP
Eine Websockets-ähnliche API für UDP
Hier ist ein Beispiel für einen Echo-Server:
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 ())
Und ein Client zur Verbindung mit dem Server:
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 ())
Sie können dieses Projekt über pip
erhalten
$ pip install aioudp
Oder wenn Sie Poesie verwenden
$ poetry add aioudp
Notiz
Diese Bibliothek bietet außer der async
/ await
-basierten API keine weiteren Abstraktionen über die vorhandene UDP-Schnittstelle in asyncio
. Dies bedeutet, dass in dieser Bibliothek kein implizites Protokoll wie QUIC behandelt wird. Sie müssen Ihre eigene schreiben oder eine andere Bibliothek finden.
async
IO-Implementierung. Es verfügt über eine ähnliche API (von der ich vor dem Schreiben dieser Bibliothek nichts wusste).Urheberrecht © 2021, Bryan Hu
Dieses Projekt ist unter der GNU GPL v3+ lizenziert.
Kurz gesagt bedeutet dies, dass Sie alles damit machen können (verteilen, modifizieren, verkaufen), aber wenn Sie Ihre Änderungen veröffentlichen möchten, müssen Sie den Quellcode und die Build-Anweisungen leicht verfügbar machen.
Wenn Sie ein Unternehmen sind, das dieses Projekt nutzt und eine Ausnahme wünscht, senden Sie mir eine E-Mail an [email protected] und wir können darüber sprechen.