Je crée une application Web qui permet à un utilisateur de télécharger une image. Lorsque l'image est téléchargée, elle doit être redimensionnée à une ou plusieurs tailles, dont chacune doit être envoyée à Amazon s3 pour être stockée. Les métadonnées et les URL de chaque taille de l'image sont stockés dans un seul enregistrement de base de données sur le serveur Web. J'utilise une file d'attente de messages pour effectuer le redimensionnement et le téléchargement de façon asynchrone (car il y a un potentiel pour les grandes images et plusieurs redimensionnements par requête). Lorsque la tâche de redimensionnement/téléchargement est terminée, l'enregistrement de la base de données doit être mis à jour avec l'URL.Meilleure pratique pour découpler une base de données d'une file d'attente de messages
Mon problème est que le travailleur exécutant la tâche n'aura pas accès à la base de données. Je pensais déclencher un callback http du travailleur à l'application Web une fois la tâche terminée avec les informations appropriées pour la mise à jour de l'enregistrement de la base de données. Y a-t-il d'autres alternatives ou raisons que je devrais faire d'une autre manière? J'utilise python/pylons pour le backend web, mysql pour la base de données et celery/amqp pour la messagerie.
Merci!
"... le travailleur exécutant la tâche n'aura pas accès à la base de données." Une raison particulière pourquoi? –
Pour la plupart, les travailleurs fonctionneront sur des machines différentes et n'auront pas directement accès à la base de données (pour des raisons de sécurité). –