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).

È stato utile?

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?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top