search
HomeBackend DevelopmentPython TutorialHow to Achieve 'Fire and Forget' Behavior in Python 3.5's Async/Await?

How to Achieve

"Fire and Forget" Python Async/Await

In asynchronous programming, it can be useful to perform non-critical operations without waiting for their completion. In Tornado, this "fire and forget" behavior can be achieved by omitting the yield keyword in a coroutine. However, in Python 3.5's async/await syntax, this approach results in a runtime warning and the non-execution of the desired operation.

Solution: asyncio.Task

According to Python's documentation for asyncio.Task, it allows for the execution of a coroutine "in the background." By using asyncio.ensure_future to spawn a task, the execution is not blocked, and the function returns immediately, similar to the "fire and forget" behavior.

import asyncio

async def async_foo():
    print("async_foo started")
    await asyncio.sleep(1)
    print("async_foo done")

async def main():
    asyncio.ensure_future(async_foo())  # fire and forget async_foo()

    # Perform other actions

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

Output:

async_foo started
Do some actions 1
async_foo done
Do some actions 2
Do some actions 3

Handling Pending Tasks

If tasks are still executing after the event loop has completed, a warning may be displayed. To prevent this, all pending tasks can be awaited once the event loop finishes:

# Let's also finish all running tasks:
pending = asyncio.Task.all_tasks()
loop.run_until_complete(asyncio.gather(*pending))

Cancelling Tasks

In some cases, it may be necessary to cancel tasks that are not expected to be completed. This can be achieved using task.cancel():

# Let's also cancel all running tasks:
pending = asyncio.Task.all_tasks()
for task in pending:
    task.cancel()
    # Now we should await task to execute it's cancellation.
    # Cancelled task raises asyncio.CancelledError that we can suppress:
    with suppress(asyncio.CancelledError):
        loop.run_until_complete(task)

The above is the detailed content of How to Achieve 'Fire and Forget' Behavior in Python 3.5's Async/Await?. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Python: A Deep Dive into Compilation and InterpretationPython: A Deep Dive into Compilation and InterpretationMay 12, 2025 am 12:14 AM

Pythonusesahybridmodelofcompilationandinterpretation:1)ThePythoninterpretercompilessourcecodeintoplatform-independentbytecode.2)ThePythonVirtualMachine(PVM)thenexecutesthisbytecode,balancingeaseofusewithperformance.

Is Python an interpreted or a compiled language, and why does it matter?Is Python an interpreted or a compiled language, and why does it matter?May 12, 2025 am 12:09 AM

Pythonisbothinterpretedandcompiled.1)It'scompiledtobytecodeforportabilityacrossplatforms.2)Thebytecodeistheninterpreted,allowingfordynamictypingandrapiddevelopment,thoughitmaybeslowerthanfullycompiledlanguages.

For Loop vs While Loop in Python: Key Differences ExplainedFor Loop vs While Loop in Python: Key Differences ExplainedMay 12, 2025 am 12:08 AM

Forloopsareidealwhenyouknowthenumberofiterationsinadvance,whilewhileloopsarebetterforsituationswhereyouneedtoloopuntilaconditionismet.Forloopsaremoreefficientandreadable,suitableforiteratingoversequences,whereaswhileloopsoffermorecontrolandareusefulf

For and While loops: a practical guideFor and While loops: a practical guideMay 12, 2025 am 12:07 AM

Forloopsareusedwhenthenumberofiterationsisknowninadvance,whilewhileloopsareusedwhentheiterationsdependonacondition.1)Forloopsareidealforiteratingoversequenceslikelistsorarrays.2)Whileloopsaresuitableforscenarioswheretheloopcontinuesuntilaspecificcond

Python: Is it Truly Interpreted? Debunking the MythsPython: Is it Truly Interpreted? Debunking the MythsMay 12, 2025 am 12:05 AM

Pythonisnotpurelyinterpreted;itusesahybridapproachofbytecodecompilationandruntimeinterpretation.1)Pythoncompilessourcecodeintobytecode,whichisthenexecutedbythePythonVirtualMachine(PVM).2)Thisprocessallowsforrapiddevelopmentbutcanimpactperformance,req

Can you concatenate lists using a loop in Python?Can you concatenate lists using a loop in Python?May 10, 2025 am 12:14 AM

Yes,youcanconcatenatelistsusingaloopinPython.1)Useseparateloopsforeachlisttoappenditemstoaresultlist.2)Useanestedlooptoiterateovermultiplelistsforamoreconciseapproach.3)Applylogicduringconcatenation,likefilteringevennumbers,foraddedflexibility.Howeve

Concatenate Lists Python: Using  , extend(), and moreConcatenate Lists Python: Using , extend(), and moreMay 10, 2025 am 12:12 AM

ThemostefficientmethodsforconcatenatinglistsinPythonare:1)theextend()methodforin-placemodification,2)itertools.chain()formemoryefficiencywithlargedatasets.Theextend()methodmodifiestheoriginallist,makingitmemory-efficientbutrequirescautionifpreserving

Python loops: examples and best practicesPython loops: examples and best practicesMay 10, 2025 am 12:05 AM

Pythonloopsincludeforandwhileloops,withforloopsidealforsequencesandwhileloopsforcondition-basedrepetition.Bestpracticesinvolve:1)Usinglistcomprehensionsforsimpletransformations,2)Employingenumerateforindex-valuepairs,3)Optingforrangeoverlistsformemor

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment