2017-09-28 4 views
0

si je planifie la tâche pour chaque minute et si elle ne peut pas être complétée dans le temps (une minute). la tâche attendrait-elle dans la file d'attente et cela continuera comme ceci? Si cela arrive, après quelques heures, il sera surchargé. y at-il une solution pour ce genre de problèmes? J'utilise beat et combinaison de travailleurs pour cela. il fonctionne bien pour moins d'enregistrements pour effectuer des tâches. mais pour une grande base de données, je pense que cela pourrait poser problème.Et si je planifie des tâches pour le céleri à effectuer chaque minute et qu'il n'est pas en mesure de le terminer à temps?

toutes les suggestions sont les bienvenues.

merci.

+0

lever la concurrence des travailleurs, ajouter d'autres travailleurs .. – ItayB

+0

Ok mais même si je commence à trois travailleurs, i avoir une seule tâche. Une seule tâche peut-elle être répartie entre les travailleurs? –

Répondre

0

La tâche est affectée à la file d'attente (RabbitMQ par exemple). Les travailleurs sont des consommateurs de file d'attente, plus de travailleurs (ou travailleurs avec une simultanéité élevée) - plus de tâches pourraient être traitées en parallèle.

Votre tâche périodique produit des messages du même type (je suppose) et votre routeur céleri les achemine vers la même file d'attente. Configurez simplement vos employés pour qu'ils consomment les messages de cette file d'attente et c'est tout.

celery worker -A celeryapp:app -l info -Q default -c 4 -n [email protected]%h -Ofair 

Dans l'exemple ci-dessus je -c 4 pour quatre concurrency (équiv. 4 consommateurs/travailleurs). Vous pouvez également commencer à déplacer des travailleurs et les laisser consommer dans la même file d'attente avec -Q <queue_name> (dans mon exemple, c'est la file d'attente default).

EDIT: Lorsque vous utilisez le céleri (le code de travail) vous initier objet Celery. Dans Celery constructeur vous configurez votre broker et backend (céleri les a utilisés dans le cadre du système) pour plus d'informations: http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html#application

+0

Okay et je suppose que rabbitmq et beat avec redis font les mêmes choses. Ai-je raison? –

+0

Voulez-vous dire rabbitmq comme céleri «broker» et redis comme céleri «backend»? vous parlez de la configuration – ItayB

+0

Je pense que je suis confus. Comment utiliser rabbitmq? J'ai employé l'ouvrier de céleri avec le battement et le redis de céleri. –