Python Imaplib SSL Errore usando la coda Celeryd
Domanda
Sto riscontrando problemi usando iMaplib su Python 2.6 con l'ultimo Django SVN. Voglio scaricare le e -mail IMAP in una coda (usando Celeryd). Sono in grado di connettere/scaricare e -mail dalla riga di comando, ma quando scarico l'attività tramite Django su Celeryd ottengo questo errore: "SSlerror: [Errno 1] _SSL.C: 1325: Errore: 1408F10B: SSL Routine: SSL3_GEGE_RECORCORD : numero di versione sbagliato ".
I documenti iMaplib non menzionano come specificare una versione di SSL. Sto cercando di effettuare e -mail da Gmail. Non capisco perché scaricare l'attività in una coda usando il celeryd causerebbe il fallimento dell'attività. Qualsiasi aiuto sarebbe molto apprezzato.
EDIT: ecco una traccia dello stack:
File "/usr/lib/python2.6/imaplib.py", riga 643, in selezione tip, dat = self._simple_command (nome, cassetta postale)
File "/usr/lib/python2.6/imaplib.py", riga 1059, in _simple_command return self._command_complete (nome, self._command (nome, *args))
File "/usr/lib/python2.6/imaplib.py", riga 889, in _command_complete typ, data = self._get_tagged_response (tag)
File "/usr/lib/python2.6/imaplib.py", riga 990, in _get_tagged_response self._get_response ()
File "/usr/lib/python2.6/imaplib.py", riga 907, in _get_response resp = self._get_line ()
File "/usr/lib/python2.6/imaplib.py", riga 1000, in _get_line line = self.readline ()
File "/usr/lib/python2.6/imaplib.py", riga 1170, in readline char = self.sslobj.read (1)
File "/usr/lib/python2.6/ssl.py", riga 136, in lettura return self._sslobj.read (Len)
Sslerror: [errno 1] _ssl.c: 1325: Errore: 1408f10b: routine SSL: ssl3_get_record: numero di versione sbagliata
EDIT: ecco l'attività che sto cercando di eseguire, in cui IMAP_PARSER è un modulo che avvolge IMAPLIB e carica e -mail nel mio 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
Ho notato che l'attività verrà effettivamente eseguita usando il sedano a meno che non io demondi l'attività usando il flag - -detach. Non so perché l'attività fallirebbe solo quando viene eseguita come demone. Ho provato a impostare lo stesso UserId e GroupId con le flag -u e -g, la stessa Umask e assicurando che il percorso e le directory di lavoro siano uguali sia per il demone che per la versione non monizzata, ma l'attività non eseguirà comunque Nel sedano quando il sedano funziona come un demone.
I "m usando l'ultima versione di sedano (0.9.4).
Soluzione 2
Secondo il Creatore di Celeryd:
Il sedano non fa più il proprio distacco a partire da 01a8a0e. Ci sono stati troppi problemi con esso, e dal momento che funziona quando si stacca utilizzando Start-Stop-Daemon, Supervisord, LaunchD e così via, sei incoraggiato a usare quegli strumenti.
Altri suggerimenti
Se si interrompe solo quando viene eseguito all'interno del lavoratore di sedano, potrebbe esserci qualcosa con AMQPLIB (che utilizza il modulo SSL) o potrebbe essere qualcosa con multiprocessing e biforcazione (una variabile globale che è stata inizializzata prima della forcella che non è più viva)
Potresti includere l'attività che stai cercando di eseguire? Ti connetti al server all'interno dell'attività stessa o è una specie di oggetto condiviso?
Ti stai connettendo a una porta che non parla TLS. Stai cercando di parlare con un server di posta abilitato TLS/SSL o il sedano sta cercando di utilizzare TLS per la sua connessione AMQP?