J'ai configuré Django Mailer et ajouté les deux commandes à la crontab :
* * * * * root python /srv/www/cpm/manage.py send_mail >> /srv/www/cpm/cron_mail.log
0,20,40 * * * * root python /srv/www/cpm//manage.py retry_deferred >> /srv/www/cpm/cron_mail_deferred.log
CPM
est le répertoire qui contient mon projet Django.
Après le redémarrage cron
J'ai lancé mon projet Django et j'ai cliqué sur un lien qui place environ 600 courriels dans la file d'attente de Django Mailer. Le site cron
La commande a récupéré les messages en file d'attente et a commencé à les envoyer consciencieusement.
Chaque courriel m'est adressé pour l'instant à des fins de test. Comme prévu, les courriels ont commencé à affluer.
Cependant, au bout d'une trentaine d'emails, j'ai voulu arrêter l'envoi des emails car je voulais faire quelques changements, et recommencer le processus (je suis en train de tester l'application en ce moment). Je suis allé dans MySQL
et a supprimé tous les enregistrements dans le django_mailer_queuedmessages
table, en pensant que cela empêchera tout autre courriel.
Les e-mails ont continué à arriver.
J'ai ensuite supprimé tous les enregistrements dans django_mailer_messages
table, espérant que arrêterait les emails.
Les emails n'arrêtaient pas d'arriver !
J'ai ensuite supprimé tous les enregistrements dans chaque table qui commence par django_mailer...
et a également commenté le crontab
les lignes qui ont django-mailer
dans ces derniers (les deux en haut) et redémarré cron
.
Les emails continuent d'arriver !
C'est quoi ce bordel ? Comment se fait-il qu'ils soient encore envoyés ? Il est intéressant de noter que chaque e-mail indique qu'il a été envoyé au moment où j'ai cliqué. Send All Emails
(il y a environ une heure maintenant) et non lorsqu'ils sont arrivés dans ma boîte de réception. Je ne sais donc pas vraiment ce qui se passe ni comment mettre fin à cet assaut d'e-mails !
Hé, regarde, un autre courriel vient d'arriver ...
EDIT 1
J'achemine tout mon courrier électronique via mon compte de messagerie Google Apps Business. Je me connecte simplement à Gmail dans mon code Python de la manière standard...
EDIT 2
Ça s'est arrêté... enfin. J'ai fini par envoyer un kill
aux deux processus qui avaient lancé le cron
les commandes. La seule chose à laquelle je peux penser est que le django_mailer a stocké tous les emails en mémoire et les a envoyés à partir de là. J'avais pensé que django-mailer prendrait un email dans la file d'attente (sa propre commande queue
), l'envoyer, puis recevoir le message suivant. Cela ne semblait pas être le cas puisque je pouvais supprimer toute la file d'attente et les messages étaient toujours envoyés. Il est clair qu'ils existaient ailleurs que dans la file d'attente stockée dans la base de données MySQL.
C'est un peu confus...