@LevSvl08

Для чего в модуле psycopg2 нужна функция wait_select?

Обычно я переношу данные из таблицы из одной базы данных в другую при помощи python-скрипта с ипользованием psycopg2, и все проходит нормально. Сейчас же я запускаю скрипт,, и ничего не происходит. Поставил в дебаге на паузу, попадаю внутрь функции wait_select, на строку, где ready = 0

def wait_select(gen: PQGen[RV], fileno: int, timeout: Optional[float] = None) -> RV:
    """
    Wait for a generator using select where supported.
    """
    try:
        s = next(gen)

        empty = ()
        fnlist = (fileno,)
        while True:
            rl, wl, xl = select.select(
                fnlist if s & WAIT_R else empty,
                fnlist if s & WAIT_W else empty,
                fnlist,
                timeout,
            )
           ready = 0
            if rl:
                ready = READY_R
            if wl:
                ready |= READY_W
            if not ready:
                continue
            # assert s & ready
            s = gen.send(ready)  # type: ignore

    except StopIteration as ex:
        rv: RV = ex.args[0] if ex.args else None
        return rv


Почему скрипт не работает, как обычно, и чего он ждет?
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
iglebov
@iglebov
Backend-разработчик
Попробуйте добавить аргумент async=1 в функцию connect
psycopg2.connect(ваши_аргументы_функции, async=1)

Из репозитория psycopg2 в GitHub видно, что wait_select зачастую используется при асинхронном подключении.
Скриншот фрагмента кода удалён модератором.

Возможно вы обновили модуль и его поведение немного изменилось.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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