SQLALCHEMY: Écriture dans la base de données après l'envoi de la réponse
-
26-09-2019 - |
Question
J'ai un service simple qui fait approximativement ce qui suit:
- Un client HTTP se connecte au serveur
- Le serveur écrit le SessionID du client et l'horodatage à la base de données, et dans la plupart des cas, il ne fait que renvoyer une réponse vide
(Les cas où il fait du travail réel et renvoie les données réelles ne sont pas pertinentes pour cette question)
Afin de retourner cette réponse dès que possible, j'aimerais écrire les informations à Memcache dans le corps du gestionnaire de demandes (parce que Memcache est rapide), et engendrer un fil séparé où une autre fonction utilisant Sqlalchemy l'écrira dans le persistance stockage. De cette façon, je pourrai revenir immédiatement après avoir écrit à Memcache et reproduir un fil, et le gestionnaire de demande n'aura pas à attendre que SQLALCHEMY enregistre les informations dans la base de données.
Est-ce que ça a du sens? Si oui, comment dois-je l'implémenter?
La solution
Vous pouvez utiliser quelque chose comme le Fituration de tâches distribuée au céleri Pour décharger le traitement vers d'autres machines. Il nécessite la configuration d'une infrastructure distincte, mais permettra aux tâches d'être remises à partir des demandes Web de traitement en arrière-plan, tandis que le HTTP Repsonse à la demande peut être renvoyé immédiatement.