Skip to content

Decorated async functions report 0 time #55

@rmaunder

Description

@rmaunder

Hi

This library is very handy but seems it can't be used with async fns - where it would be very helpful. Simple example:

import asyncio
import time
import codetiming

@codetiming.Timer(name="my_func", initial_text='Started...', text="{name} complete in {:.4f} secs")
def my_func():
  time.sleep(5)
  print('done')

@codetiming.Timer(name="my_async_func", initial_text='Started...', text="{name} complete in {:.4f} secs")
async def my_async_func():
  time.sleep(5)
  print('done')

my_func() # timing ok...

loop = asyncio.get_event_loop()
loop.run_until_complete(my_async_func()) # timing 0.0 sec

This gives output:

Started...
done
my_func complete in 5.0052 secs
Started...
my_async_func complete in 0.0000 secs
done

Is there a way to use it to correctly report the actual elapsed time for the async function somehow?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions