Eu configurei o Django Mailer e adicionei os dois comandos ao 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
é o diretório que mantém meu projeto Django.
Depois de reiniciar o cron
, liguei meu projeto do Django e cliquei em um link que coloca cerca de 600 e-mails na fila do Django Mailer. O comando cron
pegou as mensagens na fila e começou a enviar os e-mails.
Cada email é endereçado a mim por enquanto para fins de teste. Como esperado, os e-mails começaram a aparecer.
No entanto, depois de cerca de 30 e-mails, eu queria parar de enviar os e-mails, pois queria fazer algumas alterações e recomeçar o processo (estou testando o aplicativo agora). Eu entrei em MySQL
e deletei todos os registros na tabela django_mailer_queuedmessages
, pensando que isso impediria qualquer e-mail adicional.
Os e-mails continuavam chegando.
Em seguida, apaguei todos os registros em django_mailer_messages
table, esperando que isso parasse os emails.
Os e-mails continuaram chegando!
Eu excluí todos os registros em todas as tabelas que começam com django_mailer...
e também comentei as crontab
linhas que têm django-mailer
nelas (as duas acima) e reiniciei cron
.
Os emails ainda estão chegando !!
Que diabos! Como eles ainda estão sendo enviados? Curiosamente, cada e-mail informa que ele foi enviado no momento em que eu cliquei em Send All Emails
(cerca de uma hora atrás agora) e não quando eles chegaram na minha caixa de entrada. Então, eu não tenho certeza do que está acontecendo ou como parar esse ataque de e-mails!
Ei, olhe, outro e-mail acabou de chegar ...
EDIT 1
Eu roteio todos os meus e-mails através da minha conta de e-mail do Google Apps Business. Eu simplesmente me conecto ao Gmail em meu código Python da maneira padrão ...
EDIT 2
Parou ... finalmente. Acabei enviando um sinal kill
para os dois processos que iniciaram os comandos cron
. A única coisa que posso pensar que aconteceu foi que o django_mailer armazenou todos os emails na memória e os estava enviando de lá. Eu tinha pensado que o django-mailer iria pegar um e-mail fora da fila (seu próprio modelo queue
), enviá-lo, então pegar a próxima mensagem. Este não parece ser o caso, pois eu poderia excluir toda a fila e as mensagens ainda estavam sendo enviadas. Claramente eles existiam em outro lugar que não a fila armazenada no banco de dados MySQL.
Meio confuso ...