aioudp
v1.0.1
비동기 UDP를 위한 더 나은 API
UDP용 웹소켓과 유사한 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]으로 이메일을 보내주시면 논의해 드리겠습니다.