Question

J'ai un problème en utilisant IMAPLIB sur Python 2.6 avec le dernier Django SVN. Je souhaite télécharger des e-mails IMAP dans une file d'attente (en utilisant ceryd). Je suis en mesure de connecter / télécharger des e-mails à partir de la ligne de commande, mais lorsque je décharge la tâche via django en Ceryd, j'obtiens cette erreur: "SSLERROR: [ERRNO 1] _SSL.C: 1325: ERREUR: 1408F10B: SSL ROUTINES: SSL3_GET_RECORD : mauvais numéro de version ".

Les documents IMAPLIB ne mentionnent pas comment spécifier une version de SSL. J'essaie de retirer les e-mails de Gmail. Je ne comprends pas pourquoi le déchargement de la tâche dans une file d'attente à l'aide de Ceryd ferait échouer la tâche. Toute aide serait très appréciée.

Edit: voici une trace de pile:

Fichier "/usr/lib/python2.6/imaplib.py", ligne 643, dans Select type, dat = self._simple_command (nom, boîte aux lettres)

Fichier "/usr/lib/python2.6/imaplib.py", ligne 1059, dans _simple_command return self._command_complete (name, self._command (name, * args)))

Fichier "/usr/lib/python2.6/imaplib.py", ligne 889, dans _Command_Complete Typte, data = self._get_tagged_response (tag)

Fichier "/usr/lib/python2.6/imaplib.py", ligne 990, dans _GET_TAGGED_RESPONse self._get_response ()

Fichier "/usr/lib/python2.6/imaplib.py", ligne 907, dans _get_response resp = self._get_line ()

Fichier "/usr/lib/python2.6/imaplib.py", ligne 1000, dans _get_line line = self.readline ()

Fichier "/usr/lib/python2.6/imaplib.py", ligne 1170, dans Readline Char = self.sslobj.read (1)

Fichier "/usr/lib/python2.6/ssl.py", ligne 136, dans Read Return self._sslobj.read (len)

SSLERROR: [ERRNO 1] _SSL.C: 1325: ERREUR: 1408F10B: ROUTINES SSL: SSL3_GET_RECORD: Mauvais numéro de version

EDIT: Voici la tâche que j'essaie d'exécuter, où IMAP_PARSER est un module qui enveloppe IMAPLIB et charge des e-mails dans ma base de données.

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

J'ai remarqué que la tâche s'exécutera en utilisant du céleri à moins que je fasse la tâche à l'aide de l'indicateur - Detach. Je ne sais pas pourquoi la tâche échouerait uniquement lors de l'exécution comme un démon. J'ai essayé de définir le même utilisateur et groupId avec les drapeaux -u et -g, le même umask, et garantir que les répertoires de chemin et de travail sont les mêmes pour le démon et la version non assomisée, mais la tâche ne fonctionnera toujours pas Dans le céleri lorsque le céleri fonctionne comme un démon.

«Je utilise la dernière version de Celeri (0.9.4).

Était-ce utile?

La solution 2

Selon le créateur de Ceryd:

Le céleri ne fait plus de détachement à partir de 01A8A0E. Il y a eu beaucoup trop de problèmes avec cela, et comme cela fonctionne lors du détachement à l'aide de start-stop-daemon, SuperVisord, Launchd, etc., vous êtes encouragé à utiliser ces outils à la place.

Autres conseils

S'il ne se brise que lorsqu'il est exécuté à l'intérieur du céleri, il peut y avoir quelque chose avec Amqplib (qui utilise le module SSL) ou il pourrait s'agir de quelque chose avec le multiprocessement et la forking (une variable globale qui a été initialisée avant la fourche qui n'est plus en vie)

Pourriez-vous s'il vous plaît inclure la tâche que vous essayez d'exécuter? Vous connectez-vous au serveur à l'intérieur de la tâche elle-même, ou est-ce une sorte d'objet partagé?

Vous vous connectez à un port qui ne parle pas TLS. Essayez-vous de parler à un serveur de messagerie compatible TLS / SSL, ou le céleri essaie-t-il d'utiliser TLS pour sa connexion AMQP?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top