@Zo0meeer

Почему возникает ошибка «'NoneType' object has no attribute 'cancelled'» в asyncpg?

У меня есть метод класса работы с БД:
async def foo(self) -> None:
    """Копирует таблицу в файл."""
    await self.pool.copy_from_table(table_name='table', output=Path('files', 'file.csv'),
                                    schema_name='public', format='csv', delimiter=';',
                                    header=True, encoding='utf-8')

При тестировании на локальной машине файл стабильно создавался со всеми записями. В продакшене создаётся файл лишь с 50 записями, а в логах вижу ошибку:
File "/home/bot/venv/lib/python3.10/site-packages/asyncpg/pool.py", line 661, in copy_from_table
    return await con.copy_from_table(
  File "/home/bot/venv/lib/python3.10/site-packages/asyncpg/connection.py", line 760, in copy_from_table
    return await self._copy_out(copy_stmt, output, timeout)
  File "/home/bot/venv/lib/python3.10/site-packages/asyncpg/connection.py", line 1050, in _copy_out
    return await self._protocol.copy_out(copy_stmt, writer, timeout)
  File "asyncpg/protocol/protocol.pyx", line 363, in copy_out
  File "asyncpg/protocol/protocol.pyx", line 364, in asyncpg.protocol.protocol.BaseProtocol.copy_out
  File "asyncpg/protocol/coreproto.pyx", line 92, in asyncpg.protocol.protocol.CoreProtocol._read_server_messages
  File "asyncpg/protocol/coreproto.pyx", line 361, in asyncpg.protocol.protocol.CoreProtocol._process__copy_out_data
  File "asyncpg/protocol/coreproto.pyx", line 430, in asyncpg.protocol.protocol.CoreProtocol._parse_copy_data_msgs
  File "asyncpg/protocol/protocol.pyx", line 890, in asyncpg.protocol.protocol.BaseProtocol._on_result
  File "asyncpg/protocol/protocol.pyx", line 812, in asyncpg.protocol.protocol.BaseProtocol._dispatch_result
AttributeError: 'NoneType' object has no attribute 'cancelled'

Чувствую, что баг. С моей стороны есть способ исправить?
  • Вопрос задан
  • 140 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Вероятно, это баг в asyncpg. Попробуйте использовать uvloop.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы