Uma API melhor para UDP assíncrono
Uma API semelhante a websockets para UDP
Aqui está um exemplo de servidor de eco:
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 ())
E um cliente para conectar ao servidor:
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 ())
Você pode obter este projeto via pip
$ pip install aioudp
Ou, se você estiver usando Poesia
$ poetry add aioudp
Observação
Esta biblioteca não fornece outras abstrações sobre a interface UDP existente em asyncio
além da API baseada em async
/ await
. Isso significa que não há protocolo implícito tratado nesta biblioteca, como QUIC. Você deve escrever o seu próprio ou encontrar outra biblioteca.
async
. Possui uma API semelhante (que eu não conhecia antes de escrever esta biblioteca)Copyright © 2021, Bryan Hu
Este projeto está licenciado sob a GNU GPL v3+.
Resumindo, isso significa que você pode fazer qualquer coisa com ele (distribuir, modificar, vender), mas se quiser publicar suas alterações, deverá disponibilizar o código-fonte e as instruções de construção prontamente.
Se você é uma empresa que usa este projeto e deseja uma exceção, envie-me um e-mail para [email protected] e poderemos discutir.