IMAPClient - длинный опрос для нескольких папок с использованием noop - PullRequest
0 голосов
/ 26 апреля 2020

Я работаю над почтовым клиентом и в настоящее время пытаюсь реализовать синхронизацию всех папок в почтовом ящике. Чтобы добиться этого, я попытался использовать метод IMAPClient noop:

while True:
    for folder in folders:
        client.select_folder(folder, readonly=True)  # 
        response = client.noop()
        print(response)

Проблема здесь заключается в том, что при выборе папки каждый раз, когда кажется, что я не получаю обновления, при n oop возврат пустого списка в каждой итерации. Однако, если я удалю select_folder тела while-l oop и запусту один и тот же код только для одной папки, n oop будет работать так, как ожидается, возвращая последние обновления:

folder = ... # any hard-coded folder
client.select_folder(folder, readonly=True)  # 
while True:
    response = client.noop()
    print(response) # Can see the updates here

Есть ли способ преодолеть эту проблему? Или, может быть, весь мой подход неверен?

Я пытался переписать логи c, используя idle и idle_check, но даже если соответствующая возможность присутствует для почтового ящика, мы сталкиваемся с другой проблемой: ограниченное количество одновременных подключений для данного почтового ящика. Таким образом, если количество максимально разрешенных одновременных подключений меньше количества папок (как это будет происходить в большинстве случаев), такой подход также не будет приемлемым решением. Скажите, пожалуйста, что IMAPClient не предназначен для синхронизации c только одной папки за раз :)

...