2017-01-01 2 views
1

Cela ne semble pas être difficile, mais je suis perplexe. Je suis devenu django-post_office intégré avec mon code de base, et maintenant je suis en train de vérifier que je peux mettre en place des emplois cron pour le courrier électronique mis en attente comme décrit dans la documentation:Envoyer un fichier lockfile à django-post_office send_queued_mail

https://github.com/ui/django-post_office

Que je cours sur la ligne de commande ou dans crontab, je reçois le même problème:

python manage.py send_queued_mail lockfile='/home/gbeadmin/tmp/post_office.lock' 
Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/home/gbeadmin/webapps/gbe2016test/lib/python2.7/django/core/management/__init__.py", line 399, in execute_from_command_line 
    utility.execute() 
    File "/home/gbeadmin/webapps/gbe2016test/lib/python2.7/django/core/management/__init__.py", line 392, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/home/gbeadmin/webapps/gbe2016test/lib/python2.7/django/core/management/base.py", line 242, in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "/home/gbeadmin/webapps/gbe2016test/lib/python2.7/django/core/management/base.py", line 285, in execute 
    output = self.handle(*args, **options) 
    File "/home/gbeadmin/.local/lib/python2.7/site-packages/post_office/management/commands/send_queued_mail.py", line 33, in handle 
    options['lockfile']) 
KeyError: 'lockfile' 

en fouillant, je vois que je devrais être en mesure de préciser le lockfile, donc j'ai essayé:

python manage.py send_queued_mail --lockfile='<path to lock file>' 

Ce qui me donne l'erreur:

Usage: manage.py send_queued_mail [options] 

manage.py: error: no such option: --lockfile 

J'ai aussi essayé l'option « -L » figurant dans les documents, avec le même résultat de base.

Je suis perdu - Je ne vois pas un bug dans ma syntaxe, je ne vois pas d'autre façon de définir le fichier de verrouillage ...

Autres notes:

  • I « m course à WebFactional
  • Je suis en cours d'exécution django 1.6 (oui, je veux mettre à jour, qui est sur le chemin, mais ne peut pas être dans le cadre de ce billet)
  • django-post_office - 2.0.8
  • python 2.7
+0

Avez-vous votre propre implémentation de commande de gestion de 'send_queued_mail'? – karthikr

+0

non. J'utilise tout cela dès la sortie de la boîte. Et manage.py est la version installée par le système hôte. – bethlakshmi

Répondre

1

Je suis désolé d'entendre votre problème, mais le problème se trouve dans la commande de gestion. Vous voyez, KeyError signifie que le 'lockfile' n'existe pas dans le dictionnaire. Une enquête plus approfondie permet de déterminer que la cause du problème réside dans la commande de gestion. La syntaxe de la commande de gestion est valide uniquement pour Django 1.8 et plus. Ils abandonnent actuellement le support pour Django < 1.8. J'espère que cela t'aides !

+0

Merci d'avoir au moins répondu! – bethlakshmi

+0

@bethlakshmi vous êtes les bienvenus –

1

J'ai eu le même problème en utilisant django-post-office. La rétrogradation vers les versions (1.1.2, 1.1.0, 1.0.0) n'a pas non plus aidé.

FYI, j'étais en utilisant Python 2.7.7 et la version Django (1, 4, 2, 'finale', 0)

I essayé django-mailer à la place. Link Here et cela a fonctionné comme un charme. Suivi les mêmes étapes que celles utilisées avec django-post-office.

pip install django-mailer 

Ajouté le suivant à mes paramètres.py

INSTALLED_APPS = [ 
    ... 
    "mailer", 
    ... 
] 

EMAIL_BACKEND = "mailer.backend.DbBackend" 

Après, j'ai couru cette commande

python manage.py syncdb 

Il a créé les tableaux suivants:

création de la table mailer_message

création de la table mailer_dontsendentry

création de la table mailer_messagelog

Aucune modification n'est nécessaire dans votre code.

Après avoir envoyé quelques mails à ma demande, ils ont été ajoutés à la table db mailer_message

Pour envoyer ces e-mails, je l'ai utilisé la commande de gestion ajoutée par django-mailer

python manage.py send_mail 

Après les messages ont été envoyés, ils ont été supprimés de la table db et ajoutés à la table logs - mailer_messagelog à la place. Vous pouvez créer un travail cron pour exécuter cette commande après un intervalle de temps donné.

Espérons que cela aide.