2017-10-18 23 views
0

Ce programme écoute la file d'attente Redis. S'il y a des données dans Redis, les travailleurs commencent à faire leur travail. Tous ces travaux doivent s'exécuter simultanément, c'est pourquoi chaque travailleur écoute une file d'attente Redis particulière.Est-il courant d'exécuter 20 python qui utilisent Redis comme file d'attente?

Ma question est la suivante: Est-il courant de faire tourner plus de 20 travailleurs pour écouter Redis?

python /usr/src/worker1.py python /usr/src/worker2.py python /usr/src/worker3.py python /usr/src/worker4.py python/usr/src/worker5.py .... .... python /usr/src/worker6.py

+0

Cela semble être une question sans réponse. Oui c'est possible et si cela sert votre but, faites-le. Mais est-ce commun? Probablement pas. –

+0

@ChrisCharles bien c'est ce que vous obtenez avec céleri (dans ce cas, en utilisant Redis comme courtier, mais ce n'est pas le point principal IMHO), et l'utilisation de tâches comme le céleri devient assez commun. –

+0

Je suppose que cela dépend aussi de la façon dont vous définissez commun. De tous les processus python en cours d'exécution dans le monde, la plupart ne sont pas exécutés comme ça :) –

Répondre

0

Si votre travailleur a besoin de faire une longue tâche avec des données, il est une solution. mais chaque donnée doit être traitée par un seul travailleur.

De cette manière, vous pouvez easly (sans fil, etc ..) distribuer vos tâches, il est préférable si votre travailleur ne fonctionne pas dans le même serveur

0

Avoir plusieurs processus de travail (et quand je veux dire " multiple "je parle des centaines ou plus), fonctionnant probablement sur des machines différentes, aller chercher des travaux à partir d'une file d'attente de travail est en effet un modèle commun de nos jours. Il y a même des paquets/frameworks entiers consacrés à de tels workflows, comme par exemple Celery. Ce qui est moins commun, c'est d'essayer d'écrire le système de files d'attente de tâches de toutes pièces de manière ad hoc au lieu d'utiliser un système de files d'attente de tâches dédiées comme Celery, ZeroMQ ou quelque chose de similaire.