Async/await는 Python의 비동기 프로그래밍을 위한 편리한 구문을 제공합니다. 그러나 완료를 기다리지 않고 비동기 작업을 시작하려는 상황이 있습니다. 이를 종종 "실행 후 잊어버리기"라고 합니다.
Python은 백그라운드에서 실행될 작업을 생성할 수 있는 asyncio.Task를 제공합니다. asyncio.Task를 사용하면 스크립트에 다음 코드를 추가하여 "실행 후 잊어버리기"를 달성할 수 있습니다.
import asyncio async def async_foo(): # Do some asynchronous stuff here # Create a task for async_foo() asyncio.ensure_future(async_foo())
이것은 메인 스레드를 차단하지 않고 비동기적으로 실행되는 async_foo()에 대한 작업을 생성합니다.
스크립트가 모든 작업이 완료되기 전에 완료되면 다음 코드를 사용하여 보류 중인 모든 작업을 기다릴 수 있습니다.
pending_tasks = asyncio.Task.all_tasks() loop.run_until_complete(asyncio.gather(*pending_tasks))
이렇게 하면 스크립트가 종료되기 전에 모든 작업이 완료되어 경고나 오류가 발생하지 않습니다.
어떤 경우에는 작업이 완료될 때까지 기다리고 싶지 않을 수도 있습니다. 다음 코드를 사용하여 취소할 수 있습니다:
for task in pending_tasks: task.cancel() with suppress(asyncio.CancelledError): loop.run_until_complete(task)
이것은 작업을 취소하고 취소 결과로 발생할 수 있는 모든 오류를 억제합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3