>백엔드 개발 >파이썬 튜토리얼 >Python에서 Async/Await를 사용하여 'Fire and Forget'을 어떻게 달성할 수 있나요?

Python에서 Async/Await를 사용하여 'Fire and Forget'을 어떻게 달성할 수 있나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-14 10:21:01913검색

How Can I Achieve

Async/Await Python의 "Fire and Forget"

문제 설명

Async/await는 Python의 비동기 프로그래밍을 위한 편리한 구문을 제공합니다. 그러나 완료를 기다리지 않고 비동기 작업을 시작하려는 상황이 있습니다. 이를 종종 "실행 후 잊어버리기"라고 합니다.

asyncio.Task를 사용한 솔루션

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)

이렇게 하면 작업이 취소되고 취소로 인해 발생할 수 있는 모든 오류가 억제됩니다.

위 내용은 Python에서 Async/Await를 사용하여 'Fire and Forget'을 어떻게 달성할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.