Асинхронные и классы, почему Python asyncio.create_task или asyncio.gather перезаписывают данные? - PullRequest
0 голосов
/ 29 мая 2020

Я столкнулся с проблемой, но не могу понять, почему она возникает. Это происходит, когда я использую асинхронную функцию несколько раз, но не происходит, когда я использую синхронную функцию. Вот пример:

tasks_async = []


for line in client.clients_data:
   client.client_name = line['Client']
   print("Value:" + client.client_name)
   task_async.append(async.create_task(request(line, client)

async def request(line, client)
   print("Async value :" + client.client_name)

Результат:

Value: client1
Value: client2
Value: client3
Async value : client3
Async value : client3
Async value : client3

Почему это происходит и почему? Я могу справиться с этим, инициализировав client.client_name внутри функции асинхронного запроса, но я сталкиваюсь с той же проблемой внутри функции запроса, потому что после этого у меня есть асинхронные запросы, такие как

async with ClientSession() as session:
    async with await session.get(...)

, и это происходит снова для других параметры. Я думаю, это немного похоже на этот пост: Почему python asyncio l oop .call_soon перезаписывает данные? , но я не понимаю ответов. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...