Python3 SyntaxError с asyncpg

Я пытаюсь создать пул соединений, как показано в документации для тестирования модуля.

Вот моя последняя попытка:

import asyncpg
cs = "user:password@my_postgresql_server_ipaddr:port/database?name=db_name"

async with asyncpg.create_pool(dsn=cs) as pool:
    print("pool created")

Я получаю SyntaxError в строке 4, указывая на 'с':

async with asyncpg.create_pool(dsn=cs) as pool:
         ^
SyntaxError: invalid syntax

Запуск кода из интерпретатора Python на терминале дает те же результаты.

Версия Python 3.6.5, запуск скрипта из терминала с python3 script.py

1 ответ

Решение

Вы должны обернуть свой код внутри async функцию и вызовите ее внутри цикла, например:

import asyncio
import asyncpg

async def test():
    cs = "user:password@my_postgresql_server_ipaddr:port/database?name=db_name"
    async with asyncpg.create_pool(dsn=cs) as pool:
        print("pool created")

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(test())
    loop.close()

подробнее: пример-цепочка-сопрограммы

Другие вопросы по тегам