Can I make an asynchoronous method in python?

Question:

I have started learning about async in python. But in examples, I only see people use async keyword in functions. I wonder if I can use it with methods?

Here is what I tried:

import asyncio

class asyncClass:
    async def asyncMethod(self):
        print("Starting")
        await asyncio.sleep(1)
        print("Ending!")
class1 = asyncClass()
class1.asyncMethod()

But I got this error:

RuntimeWarning: coroutine 'asyncClass.asyncMethod' was never awaited
  class1.asyncMethod()
RuntimeWarning: Enable tracemalloc to get the object allocation traceback

I haven’t figured out why this error happened because I already put await keyword into the method.

Asked By: John

||

Answers:

You need to use asyncio.run to execute the method: asyncio.run(class1.asyncMethod())

Answered By: Ash Nazg