Una mejor API para UDP asíncrono
Una API similar a websockets para UDP
Aquí hay un ejemplo 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 ())
Y un cliente para conectarse al 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 ())
Puedes obtener este proyecto a través de pip
$ pip install aioudp
O, si estás usando Poesía
$ poetry add aioudp
Nota
Esta biblioteca no proporciona otras abstracciones sobre la interfaz UDP existente en asyncio
aparte de la API basada en async
/ await
. Esto significa que no se maneja ningún protocolo implícito en esta biblioteca, como QUIC. Debes escribir el tuyo propio o buscar otra biblioteca.
async
. Tiene una API similar (que no conocía antes de escribir esta biblioteca)Copyright © 2021, Bryan Hu
Este proyecto tiene la licencia GNU GPL v3+.
En resumen, esto significa que puede hacer cualquier cosa con él (distribuir, modificar, vender), pero si publica sus cambios, debe hacer que el código fuente y las instrucciones de compilación estén disponibles.
Si usted es una empresa que utiliza este proyecto y desea una excepción, envíeme un correo electrónico a [email protected] y podremos discutirlo.