Das imaplib
Modul bietet keine Möglichkeit Timeout einstellen, aber Sie können eine Standard-Timeout für neue Socket-Verbindungen eingestellt über die socket.setdefaulttimeout
: mit über das Überschreiben der imaplib.IMAP4
Klasse auch gehen
import socket
import imaplib
socket.setdefaulttimeout(10)
imap = imaplib.IMAP4('test.com', 666)
Oder Sie können einige Kenntnisse aus imaplib
source und Dokumente, die eine bessere Kontrolle bietet:
import imaplib
import socket
class IMAP(imaplib.IMAP4):
def __init__(self, host='', port=imaplib.IMAP4_PORT, timeout=None):
self.timeout = timeout
# no super(), it's an old-style class
imaplib.IMAP4.__init__(self, host, port)
def open(self, host='', port=imaplib.IMAP4_PORT):
self.host = host
self.port = port
self.sock = socket.create_connection((host, port), timeout=self.timeout)
# clear timeout for socket.makefile, needs blocking mode
self.sock.settimeout(None)
self.file = self.sock.makefile('rb')
Hinweis, dass die Verbindung nach dem Erstellen wir den Socket-Timeout zurück zu None
bis g eingestellt sollte et es Modus für nachfolgenden socket.makefile
Aufruf zu blockieren, wie es in dem Verfahren docs angegeben:
... Die Steckdose muss in blockierenden Modus (es kann kein Timeout hat). ...
Bitte entfernen Sie self.sock.settimeout (None), es Timeout nicht funktioniert und blockiert immer. – haosdent