У меня есть очень простой игрушечный пример, в котором используются Anthropic и asyncio.
Это цикл, который несколько раз запускает функцию asyncio.run().
Иногда возникает ошибка RuntimeError: Event цикл закрыт, во время итераций возникает исключение, и я не понимаю, почему.
Думаю, я неправильно использую asyncio, но не могу понять, где.
Кажется, код работает нормально хотя.
import asyncio
from time import perf_counter
import numpy as np
from anthropic import Anthropic, AsyncAnthropic
async def coroutine1():
prompt = "Who discovered gravity. Answer in 10 words."
client = AsyncAnthropic()
message = await client.messages.create(
model="claude-3-5-sonnet-20240620",
max_tokens=1024,
messages=[{"role": "user", "content": prompt}],
)
return message.content[0].text
async def coroutine2():
prompt = "Who discovered radioactivity. Answer in 10 words."
client = AsyncAnthropic()
message = await client.messages.create(
model="claude-3-5-sonnet-20240620",
max_tokens=1024,
messages=[{"role": "user", "content": prompt}],
)
return message.content[0].text
async def main():
async with asyncio.TaskGroup() as tg:
t0 = tg.create_task(coroutine1())
t1 = tg.create_task(coroutine2())
print(t0.result())
print(t1.result())
if __name__ == "__main__":
for i in range(10):
tic = perf_counter()
asyncio.run(main())
toc = perf_counter()
print(f"Elapsed time = {toc - tic:.3f}")
Измените ниже. Вот полная трассировка:
Task exception was never retrieved
future:
Traceback (most recent call last):
File "/Users/foo/Desktop/async/venv/lib/python3.12/site-packages/httpx/_client.py", line 2031, in aclose
await self._transport.aclose()
File "/Users/foo/Desktop/async/venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 389, in aclose
await self._pool.aclose()
File "/Users/foo/Desktop/async/venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 313, in aclose
await self._close_connections(closing_connections)
File "/Users/foo/Desktop/async/venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 305, in _close_connections
await connection.aclose()
File "/Users/foo/Desktop/async/venv/lib/python3.12/site-packages/httpcore/_async/connection.py", line 171, in aclose
await self._connection.aclose()
File "/Users/foo/Desktop/async/venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 265, in aclose
await self._network_stream.aclose()
File "/Users/foo/Desktop/async/venv/lib/python3.12/site-packages/httpcore/_backends/anyio.py", line 55, in aclose
await self._stream.aclose()
File "/Users/foo/Desktop/async/venv/lib/python3.12/site-packages/anyio/streams/tls.py", line 201, in aclose
await self.transport_stream.aclose()
File "/Users/foo/Desktop/async/venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 1287, in aclose
self._transport.close()
File "/Users/foo/.pyenv/versions/3.12.1/lib/python3.12/asyncio/selector_events.py", line 1206, in close
super().close()
File "/Users/foo/.pyenv/versions/3.12.1/lib/python3.12/asyncio/selector_events.py", line 871, in close
self._loop.call_soon(self._call_connection_lost, None)
File "/Users/foo/.pyenv/versions/3.12.1/lib/python3.12/asyncio/base_events.py", line 792, in call_soon
self._check_closed()
File "/Users/foo/.pyenv/versions/3.12.1/lib/python3.12/asyncio/base_events.py", line 539, in _check_closed
raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
Task exception was never retrieved
future:
Traceback (most recent call last):
File "/Users/foo/Desktop/async/venv/lib/python3.12/site-packages/httpx/_client.py", line 2031, in aclose
await self._transport.aclose()
File "/Users/foo/Desktop/async/venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 389, in aclose
await self._pool.aclose()
File "/Users/foo/Desktop/async/venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 313, in aclose
await self._close_connections(closing_connections)
File "/Users/foo/Desktop/async/venv/lib/python3.12/site-packages/httpcore/_async/connection_pool.py", line 305, in _close_connections
await connection.aclose()
File "/Users/foo/Desktop/async/venv/lib/python3.12/site-packages/httpcore/_async/connection.py", line 171, in aclose
await self._connection.aclose()
File "/Users/foo/Desktop/async/venv/lib/python3.12/site-packages/httpcore/_async/http11.py", line 265, in aclose
await self._network_stream.aclose()
File "/Users/foo/Desktop/async/venv/lib/python3.12/site-packages/httpcore/_backends/anyio.py", line 55, in aclose
await self._stream.aclose()
File "/Users/foo/Desktop/async/venv/lib/python3.12/site-packages/anyio/streams/tls.py", line 201, in aclose
await self.transport_stream.aclose()
File "/Users/foo/Desktop/async/venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 1287, in aclose
self._transport.close()
File "/Users/foo/.pyenv/versions/3.12.1/lib/python3.12/asyncio/selector_events.py", line 1206, in close
super().close()
File "/Users/foo/.pyenv/versions/3.12.1/lib/python3.12/asyncio/selector_events.py", line 871, in close
self._loop.call_soon(self._call_connection_lost, None)
File "/Users/foo/.pyenv/versions/3.12.1/lib/python3.12/asyncio/base_events.py", line 792, in call_soon
self._check_closed()
File "/Users/foo/.pyenv/versions/3.12.1/lib/python3.12/asyncio/base_events.py", line 539, in _check_closed
raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
Подробнее здесь: https://stackoverflow.com/questions/791 ... -is-closed
Asyncio вызывает ошибку «RuntimeError: цикл событий закрыт» ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Asyncio.run () Raise "RuntimeError: цикл событий закрыт" в ноутбуке Юпитера
Anonymous » » в форуме Python - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-