Question

Je dois mettre en place une file d'attente emploi / message avec la possibilité de définir un délai pour la tâche afin qu'il soit pas pris immédiatement par un travailleur libre, mais après un certain temps (peut varier d'une tâche à). Je regardais dans quelques solutions de file d'attente linux (rabbitmq, gearman, memcacheq), mais aucun d'entre eux semblent offrir cette fonctionnalité hors de la boîte.

Toutes les idées sur la façon dont je pourrais y parvenir?

Merci!

Était-ce utile?

La solution

Je l'ai utilisé beanstalkd à grand effet, en utilisant l'option de retard sur l'insertion d'un nouvel emploi à attendre quelques secondes jusqu'à ce que l'article sera disponible à réserver.

Si vous faites des retards à long terme (plus de dire 30 secondes), ou les emplois sont peu importants pour effectuer (abeit plus tard), il dispose également d'un système d'enregistrement binaire de sorte que tout accident démon aurait encore un record du travail. Cela dit, je l'ai mis des centaines de milliers d'emplois en direct par les instances beanstalkd et les travailleurs que je qu'écrivait toujours plus problématique que le serveur.

Autres conseils

Vous pouvez utiliser un courtier AMQP (comme RabbitMQ) et I ont un « agent » (par exemple un processus de python construit en utilisant pyton-amqplib) qui se trouve sur un échange une interception des messages spécifiques (routing_key spécifique); une fois par minuterie est écoulé, renvoyer le message sur l'échange avec un autre routing_key.

Je me rends compte que cela signifie "Translating / mapping" routing keys mais cela fonctionne. Travailler avec RabbitMQ et python-amqplib est très simple.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top