signal_test.py 612 B

12345678910111213141516171819202122
  1. import asyncio, signal
  2. from asyncio import AbstractEventLoop
  3. from typing import Set
  4. import sys
  5. sys.path.append('/mnt/e/projects/codewars/python_net/asyncioo')
  6. from util.delay_functions import delay
  7. def cansel_tasks():
  8. print('Получен сигнал SIGINT!')
  9. tasks: Set[asyncio.Task] = asyncio.all_tasks()
  10. print(f'Снимается {len(tasks)} задач.')
  11. [task.cancel() for task in tasks]
  12. async def main():
  13. loop: AbstractEventLoop = asyncio.get_running_loop()
  14. loop.add_signal_handler(signal.SIGINT, cansel_tasks)
  15. await delay(10)
  16. asyncio.run(main())