/ / Django / Python: Como posso monitorar o banco de dados mysql e acionar email quando timestamp = NOW ()? - python, sql, django, monitor

Django / Python: Como posso monitorar o banco de dados mysql e disparar e-mails quando timestamp = NOW ()? - python, sql, django, monitor

Se eu quero fazer um sistema de alerta. Como posso implementar esses recursos?

Eu tenho um banco de dados MySQL que armazena a mensagem do usuário e o carimbo de data / hora (ou data e hora). Quero acionar o envio de email para esse usuário se o carimbo de data / hora for maior que o carimbo de data / hora atual.

Como posso implementar esse recurso usandoAplicativo web baseado em Django / python? Preciso usar o cron job para monitorar o banco de dados? ou existe uma ferramenta para monitorar o banco de dados e acionar chamadas de API para enviar email?

Obrigado rapazes! Vou esperar ótimas respostas!

Respostas:

1 para resposta № 1

Você deve conseguir fazer isso dentro da sua visão emDjango, e realmente não precisa ter um cron externo rodando em seu banco de dados. Para esclarecer um pouco, você deseja que o email seja enviado quando a mensagem é processada na exibição ou alguma outra ação faz com que as mensagens sejam criadas e você deseja que a mensagem seja enviada.

Para enviar o próprio email, você pode ter algo como:

from django.core.mail import EmailMultiAlternatives
from django.template.loader import render_to_string
from django.utils.html import strip_tags
import logging

logging.basicConfig(level=logging.DEBUG)
log = logging.getLogger(__name__)

def send_message(to):
log.error("starting send email")
subject, from_email = "Message Confirmation", "youraddress@gmail.com"
html_content = render_to_string("emails/message.html", {"email": str(to)})
# this strips the html, so people will have the text as well.
text_content = strip_tags(html_content)
# create the email, and attach the HTML version as well.
msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
msg.attach_alternative(html_content, "text/html")
msg.send()

Na sua visão, você pode disparar este e-mail imediatamente com:

send_message(user_email)

Ou você pode verificar a data da mensagem e, se a hora for um determinado valor, envie.