سؤال

أواجه مشكلة في استخدام IMAPLIB على Python 2.6 مع أحدث Django SVN. أريد تنزيل رسائل البريد الإلكتروني IMAP في قائمة انتظار (باستخدام CeleryD). أنا قادر على توصيل / تنزيل رسائل البريد الإلكتروني من سطر الأوامر، ولكن عندما أقوم بتفريغ المهمة من خلال Django إلى CeleryD، أحصل على هذا الخطأ: "SSLError: [Errno 1] _ssl.c: 1325: خطأ: 1408F10B: إجراءات SSL: SSL3_GET_RECORD : رقم إصدار خاطئ ".

لا تذكر مستندات IMAPLIB كيفية تحديد إصدار من SSL. أحاول سحب رسائل البريد الإلكتروني من Gmail. لا أفهم لماذا تفريغ المهمة إلى قائمة انتظار باستخدام CeleryD سيؤدي إلى فشل المهمة. أي مساعدة سيكون محل تقدير كبير.

تحرير: هنا هو أثر المكدس:

ملف "/usr/lib/python2.6/imaplib.py"، السطر 643، في SELECT TYP، DAT = SELF.SIMPLE_COMMAND (الاسم، صندوق البريد)

ملف "/usr/lib/python2.6/imaplib.py"، السطر 1059، في _simple_command عودة self._command_complete (الاسم، self._command (الاسم، * 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، في Creadline 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

لقد لاحظت أن المهمة ستشغيل فعلا باستخدام الكرفس ما لم أخرج المهمة باستخدام علامة - Detetach. لا أعرف لماذا تفشل المهمة فقط عند تشغيل برنامج مخفي. لقد حاولت تحديد نفس معرف المستخدم و GroupID مع أعلام -u و -غ، نفس UMAKER، وضمان الدوارة وأدلة العمل هي نفسها لكل من الخفي والإصدار غير المخلصين، ولكن المهمة لا تزال لا تعمل في الكرفس عندما يعمل الكرفس كخفي.

أنا باستخدام أحدث نسخة من الكرفس (0.9.4).

هل كانت مفيدة؟

المحلول 2

وفقا لخالق Celeryd:

لم تعد الكرفس تقوم بفصلها الخاص اعتبارا من 01A8A0E. كانت هناك مشاكل كثيرة للغاية معها، وبما أنها تعمل عند الانفصال باستخدام الخفي الإيقاف Start-Stop-debon، Supervisord، LaunchD وهلم جرا، فإنك تشجع على استخدام هذه الأدوات بدلا من ذلك.

نصائح أخرى

إذا فواصل فقط عند تشغيلها داخل عامل الكرفس، فقد يكون هناك شيء مع amqplib (والذي يستخدم وحدة SSL) أو يمكن أن يكون شيئا مع متعدد المعالجات والمزوجة (متغير عالمي تمت تهيئته قبل الشوكة التي لم تعد حية)

هل يمكن أن تضم المهمة التي تحاول تشغيلها؟ هل تتصل بالخادم داخل المهمة نفسها، أم أنها نوع من الكائن المشترك؟

أنت توصل إلى منفذ لا يتحدث TLS. هل تحاول التحدث إلى خادم بريد TLS / SSL يدعم، أو هل يحاول الكرفس استخدام TLS لاتصال AMQP الخاص به؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top