/ / Django / Python: Comment puis-je contrôler la base de données mysql et déclencher un courrier électronique lorsque timestamp = NOW ()? - python, sql, django, moniteur

Django / Python: Comment puis-je surveiller la base de données MySQL et déclencher un courrier électronique lorsque timestamp = NOW ()? - python, sql, django, moniteur

Si je veux faire un système d'alerte. Comment puis-je implémenter ces fonctionnalités?

J'ai une base de données MySQL qui stocke le message de l'utilisateur et son horodatage (ou date / heure). Je souhaite déclencher l'envoi d'un courrier électronique à cet utilisateur si l'horodatage est supérieur à l'horodatage actuel.

Comment puis-je implémenter cette fonctionnalité en utilisantApplication Web basée sur Django / python? Dois-je utiliser cron job pour surveiller la base de données? ou existe-t-il un outil pour surveiller la base de données et déclencher un appel d'API pour envoyer un courrier électronique?

Merci les gars! Je vais attendre de bonnes réponses!

Réponses:

1 pour la réponse № 1

Vous devriez pouvoir le faire à votre avis dansDjango, et vraiment pas besoin d'avoir un cron externe exécuté sur votre base de données. Pour clarifier un peu, voulez-vous que l'e-mail soit envoyé lorsque le message est traité dans la vue ou effectuez une autre action afin de créer des messages et de les envoyer ensuite?

Pour envoyer l'e-mail lui-même, vous pourriez avoir quelque chose comme:

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()

Dans votre champ de vision, vous pouvez immédiatement envoyer cet email avec:

send_message(user_email)

Ou vous pouvez vérifier la date du message et si le temps est une certaine valeur, envoyez