2017-06-24 1 views
0

J'utilise mon application Django dans un environnement Elastic Beanstalk équilibré. Je veux ajouter un démon Céleri pour faire les choses suivantes:exécuter Celery sur le même serveur que django?

  • fichiers Télécharger à S3 en arrière-plan et d'envoyer une réponse de succès à mon application Android
  • Envoyer un SMS aux utilisateurs pour les informer au sujet de leur prochaine (SIGE en utilisant battement de céleri)
  • Mon application utilise la vision Google cloud pour certaines fonctionnalités, qui prend 10sec à courir, donc je peux courir que maintenant, je veux savoir en arrière-plan

si elle est la bonne façon de déployer du céleri sur le même serveur que Django s'exécute en utilisant Amazon SQS? Si oui, comment puis-je configurer cela?

Et si plusieurs serveurs sur Elastic Beanstalk peuvent provoquer des tâches en double à cause du céleri?

Répondre

2

Peu importe où vous allez commencer votre céleri: sur le même serveur ou sur le séparé, les deux sens sont bons. Peu importe ce que vous utiliserez pour le backend céleri. Si vous utilisez une redis ou une base de données partagée entre toutes les céleri-ries, il n'y a aucune chance que les tâches se dupliquent, mais si chaque céleri a son propre backend, cela créera un chaos et un désastre.

+0

merci pour la réponse. Mon problème est celery beat qui sera conçu pour vérifier les entrées dans la base de données (instance AWS RDS) qui appartiennent à cette date et leur envoyer des notifications en fonction de cela. Je pense que si plusieurs instances de céleri sont en cours d'exécution, cela peut entraîner des notifications en double. J'utilise AWS SQS pour la mise en file d'attente des messages, –

+0

Cela fonctionnera bien avec SQS et ne dupliquera pas les messages si vous n'oublie pas de supprimer les messages après "execute" et de donner le message "repeat time" (je ne sais pas il est correctement nommé dans AWS) – vZ10