/tests/extmod/uasyncio_micropython.py

https://github.com/mcauser/micropython · Python · 37 lines · 21 code · 10 blank · 6 comment · 4 complexity · 4280e40f9d901bf7e7e19d59bfd497e4 MD5 · raw file

  1. # Test MicroPython extensions on CPython asyncio:
  2. # - sleep_ms
  3. # - wait_for_ms
  4. try:
  5. import utime, uasyncio
  6. except ImportError:
  7. print("SKIP")
  8. raise SystemExit
  9. async def task(id, t):
  10. print("task start", id)
  11. await uasyncio.sleep_ms(t)
  12. print("task end", id)
  13. return id * 2
  14. async def main():
  15. # Simple sleep_ms
  16. t0 = utime.ticks_ms()
  17. await uasyncio.sleep_ms(1)
  18. print(utime.ticks_diff(utime.ticks_ms(), t0) < 100)
  19. # When task finished before the timeout
  20. print(await uasyncio.wait_for_ms(task(1, 5), 50))
  21. # When timeout passes and task is cancelled
  22. try:
  23. print(await uasyncio.wait_for_ms(task(2, 50), 5))
  24. except uasyncio.TimeoutError:
  25. print("timeout")
  26. print("finish")
  27. uasyncio.run(main())