最新のdjango svnを使用してpython 2.6でimaplibを使用すると問題が発生します。imap メールをキューにダウンロードしたい (celeryd を使用)。コマンドラインからメールを接続/ダウンロードできますが、django を介してタスクを celeryd にオフロードすると、次のエラーが表示されます: "SSLError: [Errno 1] _ssl.c:1325: error:1408F10B:SSL routines:SSL3_GET_RECORD :間違ったバージョン番号".
Imaplib のドキュメントには、SSL のバージョンを指定する方法が記載されていません。gmailからメールを取り込もうとしています。celeryd を使用してタスクをキューにオフロードすると、タスクが失敗する理由がわかりません。どんな助けでも大歓迎です。
編集:ここにスタックトレースがあります:
ファイル "/usr/lib/python2.6/imaplib.py"、643 行目、select typ、dat = self._simple_command(name, mailbox)
ファイル "/usr/lib/python2.6/imaplib.py"、1059 行目、_simple_command で self._command_complete(name, self._command(name, *args)) を返す
ファイル "/usr/lib/python2.6/imaplib.py"、889 行目、_command_complete typ、データ = self._get_tagged_response(tag)
ファイル "/usr/lib/python2.6/imaplib.py"、990 行目、_get_tagged_response self._get_response() 内
ファイル "/usr/lib/python2.6/imaplib.py"、907 行目、_get_response resp = self._get_line() 内
ファイル "/usr/lib/python2.6/imaplib.py"、1000 行目、_get_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: error:1408F10B:SSL ルーチン:SSL3_GET_RECORD:間違ったバージョン番号
編集:これは私が実行しようとしているタスクです。ここで、imap_parser は imaplib をラップし、電子メールをデータベースにロードするモジュールです。
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 フラグを使用して同じユーザー ID とグループ ID を設定し、同じ umask を設定し、パスと作業ディレクトリがデーモンと非デーモン化バージョンの両方で同じであることを確認しましたが、タスクはまだ実行されません。セロリがデーモンとして実行されている場合のセロリ。
セロリの最新バージョン(0.9.4)を使用しています。