Twisted, Tornado
Ничего из этого. Поясню: Во-первых, у обоих собственные нестандартные реализации IMAP (к Tornado в принципе возможно прикрутить стандартную), это было бы не критично, если бы не прекрасные варианты обойтись стандартной
imaplib/
IMAPClient. Во-вторых, сами фреймворки: Twisted уже несколько outdated, интерес к нему постепенно угасает, Tornado вроде еще держится за счет своих фанатов, но он тоже слишком специфичен и на данный момент почти не дает уникальных преимуществ (на момент начала его разработки его преимущества были довольно уникальны).
Для любых задач с асинхронным вводом/выводом я советую выбирать из (в порядке приоритета):
- Asyncio (python >= 3.4).
- Gevent.
- Стандартные потоки threading. Их минус в том, что не все I/O вызовы отпускают GIL на время исполнения (особенно это касается python 2), для каждой конкретной задачи приходится писать собственный бенчмарк, чтобы доказать/опровергнуть реальную асинхронность и эквивалентность (в плане производительности) эталонной реализации, например, на gevent.