Add solution for 6.5 section
This commit is contained in:
parent
ab12d7efc0
commit
16b8ef873c
1 changed files with 51 additions and 0 deletions
51
6_tasks/6_5_10_reports.py
Normal file
51
6_tasks/6_5_10_reports.py
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
import asyncio
|
||||||
|
|
||||||
|
reports = [
|
||||||
|
{"name": "Алексей Иванов", "report": "Отчет о прибылях и убытках", "load_time": 5},
|
||||||
|
{
|
||||||
|
"name": "Мария Петрова",
|
||||||
|
"report": "Прогнозирование движения денежных средств",
|
||||||
|
"load_time": 4,
|
||||||
|
},
|
||||||
|
{"name": "Иван Смирнов", "report": "Оценка инвестиционных рисков", "load_time": 3},
|
||||||
|
{
|
||||||
|
"name": "Елена Кузнецова",
|
||||||
|
"report": "Обзор операционных расходов",
|
||||||
|
"load_time": 2,
|
||||||
|
},
|
||||||
|
{"name": "Дмитрий Орлов", "report": "Анализ доходности активов", "load_time": 10},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
async def download_data(report):
|
||||||
|
stop_name = "Дмитрий Орлов"
|
||||||
|
report_name = report["report"]
|
||||||
|
name = report["name"]
|
||||||
|
cur_task = asyncio.current_task()
|
||||||
|
if name == stop_name:
|
||||||
|
# asyncio.create_task(cancel_task(cur_task))
|
||||||
|
await cancel_task(cur_task)
|
||||||
|
print(
|
||||||
|
f"Загрузка отчета Анализ доходности активов для пользователя Дмитрий Орлов остановлена. Введите новые данные"
|
||||||
|
)
|
||||||
|
await asyncio.sleep(report["load_time"])
|
||||||
|
print(f"Отчет: {report_name} для пользователя {name} готов")
|
||||||
|
|
||||||
|
|
||||||
|
async def cancel_task(task):
|
||||||
|
task.cancel()
|
||||||
|
|
||||||
|
|
||||||
|
async def main():
|
||||||
|
tasks = [
|
||||||
|
asyncio.create_task(download_data(report=rep_entry), name=rep_entry["name"])
|
||||||
|
for rep_entry in reports
|
||||||
|
]
|
||||||
|
# try:
|
||||||
|
# await asyncio.wait(tasks)
|
||||||
|
# except asyncio.CancelledError:
|
||||||
|
# pass
|
||||||
|
await asyncio.wait(tasks)
|
||||||
|
|
||||||
|
|
||||||
|
asyncio.run(main())
|
Loading…
Reference in a new issue