在python中关闭socks /代理连接

时间:2012-04-18 04:37:29

标签: python

我正在编写一些使用poplib和imaplib通过代理服务器收集电子邮件的代码。

我使用以下方法设置代理连接: -

import socks
import socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS4,proxy_ip,port,True)
socket.socket = socks.socksocket

我从stackoverflow帖子中得到了: -

http://stackoverflow.com/questions/3386724/python-how-can-i-fetch-emails-via-pop-or-imap-through-a-proxy

然后我与电子邮件服务器建立连接: -

server = poplib.POP3(self.host, self.port)
server.user(self.username)
server.pass_(self.password)

我在单元测试中测试我的代码并遇到了一个问题,我认为这与我与代理的连接没有正确关闭有关。

一个例子是: -

我已设置代理连接,并尝试与电子邮件服务器建立连接。作为unittest的一部分,我故意使用不正确的电子邮件服务器密码。 poplib库抛出一个无法连接的异常。我在unittest中捕获异常,然后转到下一个unittest,相信poplib库会正确关闭我以前的连接。

我的理解是,这不是一件好事,我应该确保正确关闭电子邮件和代理服务器连接。

我知道如何关闭pop3连接: -

server.quit()

但不知道如何关闭与代理服务器的连接,或者我必须这样做。

有人可以帮助我解决这个问题,或者我的理解是否存在问题所在:)

1 个答案:

答案 0 :(得分:0)

无需特殊操作。当您关闭POP连接时,代理连接将自动关闭,因为只有在通过代理连接到某些内容时才需要它。