Python Imaplib SSL使用芹菜队列错误
题
我使用python 2.6上的imaplib和最新的Django SVN遇到了问题。我想在队列中下载IMAP电子邮件(使用芹菜)。我可以从命令行连接/下载电子邮件,但是当我通过django将任务卸载到芹菜时,我会得到此错误:“ sslerror:[errno 1] _sssl.c:1325:错误:1408f10b:ssl3_get_record:ssl3_record:ssl3_record: :错误的版本编号”。
Imaplib文档没有提及如何指定SSL版本。我正在尝试从Gmail那里提取电子邮件。我不明白为什么使用芹菜将任务卸载为队列会导致任务失败。任何帮助将非常感激。
编辑:这是一个堆栈跟踪:
文件“/usr/lib/python2.6/imaplib.py”,第643行,在select typ,dat = self._simple_command(名称,邮箱)
文件“/usr/lib/python2.6/imaplib.py”,第1059行,在_simple_command return self._command_complete(name,self._command(name, *args)))
文件“/usr/lib/python2.6/imaplib.py”,第889行,在_command_complete typ,data = self._get_tagged_response(tag)
文件“/usr/lib/python2.6/imaplib.py”,第990行,in _get_tagged_response self._get_response()
文件“/usr/lib/python2.6/imaplib.py”,第907行,in _get_response revs = self._get_line()
文件“/usr/lib/python2.6/imaplib.py”,第1000行,in _get_line line = self.readline()
文件“/usr/lib/python2.6/imaplib.py”,第1170行,在readline char = self.sslobj.read(1)中
文件“/usr/lib/python2.6/ssl.py”,第136行,在读取返回self._sslobj.read(len)中
SSLERROR:[ERRNO 1] _SSL.C:1325:错误:1408F10B:SSL例程:ssl3_get_record:错误的版本编号
编辑:这是我要运行的任务,其中imap_parser是一个包裹imaplib并将电子邮件加载到我的DB中的模块。
class DumpIMAPData(Task):
def run(self, user, username, password, imap_address, **kwargs):
logger = self.get_logger(**kwargs)
celery.log.redirect_stdouts_to_logger(logger, loglevel=None)
#imap_address is e.g. 'imap.gmail.com'
parser = imap_parser.IMAPFetcher(imap_address, username, password, user\
)
parser.load_all_emails()
return True
我已经注意到,除非我使用-Detach标志对任务进行守护,否则任务实际上将使用芹菜进行。我不知道为什么只有作为守护程序运行时,任务才会失败。我尝试使用-u和-g标志,相同的umask设置相同的UserID和GroupID,并确保守护程序和非daemonized版本的路径和工作目录相同,但是任务仍然不会运行在芹菜作为守护进程时,芹菜。
我使用最新版本的芹菜(0.9.4)。
解决方案 2
根据芹菜的创造者的说法:
从01A8A0E开始,芹菜不再进行自己的分离。它的问题太多了,并且由于它在使用Start-daemon,Substisord,LaunchD等分离时起作用,因此您鼓励您使用这些工具。
其他提示
如果仅在芹菜工人内部运行时破裂,则可能有AMQPLIB(使用SSL模块)的某些东西,或者可能是多处理和分叉的东西(一个不再活着的叉子之前初始化的全局变量)
您能否包括您要运行的任务?您是否连接到任务本身内部的服务器,还是某种共享对象?
您正在连接到不讲TLS的端口。您是要与启用TLS/SSL启用的邮件服务器交谈,还是芹菜试图将TLS用于其AMQP连接?