Does Python's imaplib let you set a timeout? -
i'm looking @ api python's imaplib.
from can tell, there no way setup timeout can smtplib.
is correct? how handle host that's invalid if don't want block?
the imaplib module doesn't provide way set timeout, can set default timeout new socket connections via socket.setdefaulttimeout:
import socket import imaplib socket.setdefaulttimeout(10) imap = imaplib.imap4('test.com', 666) or can go overriding imaplib.imap4 class knowledge imaplib source , docs, provides better control:
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 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 socket.makefile, needs blocking mode self.sock.settimeout(none) self.file = self.sock.makefile('rb') note after creating connection should set socket timeout none blocking mode subsequent socket.makefile call, stated in method docs:
... socket must in blocking mode (it can not have timeout). ...
Comments
Post a Comment