Код: Выделить всё
async def get_daten(url, uri, maschine):
client = Client(url=url)
client.session_timeout = 30000
stueckzahl = None
try:
await client.connect()
idx = await client.register_namespace(uri)
stueckzahl_node = client.get_node(f"ns={idx};i=7")
stueckzahl = await client.get_values([stueckzahl_node])
stueckzahl = stueckzahl[0]
zeitpunkt = datetime.now()
await client.disconnect()
except OSError as e:
zeitpunkt = datetime.now()
# print("OSError")
except asyncio.exceptions.TimeoutError as e:
zeitpunkt = datetime.now()
print(f"TimeoutError: {maschine}, {url}")
except asyncio.exceptions.CancelledError as e:
zeitpunkt = datetime.now()
print(f"CancelledError: {maschine}, {url}")
except BadNotWritable as e:
zeitpunkt = datetime.now()
print(f"BadNotWritable: {maschine}, {url}, {e}")
print(await client.get_namespace_array())
return zeitpunkt, stueckzahl
tasks = []
for key in config:
maschine = config[key]
url = maschine['url']
uri = maschine['namespace']
tasks.append(get_daten(url, uri, maschine['MaschinenName']))
# Run all tasks concurrently
results = await asyncio.gather(*tasks)
"будущее для идентификатора запроса 4 уже сделано" < /p>
Я не могу точно определить с уверенностью, откуда он поступает, потому что это происходит только редко (программа работает один раз в минуту, и это происходит каждую или две недели), и она запускается на сервере, но у меня очень сильное подозрение, что это происходит на функции сбора, так как это единственное, что у меня есть, и Похоже, что сообщение относится к фьючерсам на асинсио. Asyncio.gather, но в очень редких случаях задача уже выполняется до того, как она будет добавлена в Asyncio.gather. < /p>
Мои вопросы: < /p>
- Является ли мое предположение о причине правильно? Потому что за исключения я обычно получаю стектрас, которая здесь не так, < /li>
Есть ли способ улучшить этот раздел моего кода, чтобы эта ошибка больше не произошла, поскольку она не должна Действительно быть проблемой, что какая -то функция выполняется быстрее?
Подробнее здесь: https://stackoverflow.com/questions/793 ... ready-done
Мобильная версия