J'ai obtenu que les tâches Celery se déroulent correctement, en utilisant les paramètres par défaut des tutoriels et en faisant tourner rabbitmq sur ubuntu. Tout va bien quand je planifie une tâche sans délai, mais quand je leur donne un délai, elles sont planifiées dans le futur comme si mon horloge était décalée quelque part.
Voici un code python qui demande des tâches :
for index, to_address in enumerate(email_addresses):
# schedule one email every two seconds
delay = index * 2
log.info("MessageUsersFormView.process_action() scheduling task,"
"email to %s, countdown = %i" % (to_address, delay) )
tasks.send_email.apply_async(args=[to_address, subject, body],
countdown = delay)
Le premier doit donc être émis immédiatement, puis toutes les deux secondes. En regardant ma console celery, le premier est émis immédiatement, puis les autres sont programmés à deux secondes d'intervalle, mais à partir de demain :
[2012-03-09 17:32:40,988: INFO/MainProcess] Got task from broker: stabil.tasks.send_email[24fafc0b-071b-490b-a808-29d47bbee435]
[2012-03-09 17:32:40,989: INFO/MainProcess] Got task from broker: stabil.tasks.send_email[3eb6c3ea-2c84-4368-babe-8a2ac0093836] eta:[2012-03-10 01:32:42.971072-08:00]
[2012-03-09 17:32:40,991: INFO/MainProcess] Got task from broker: stabil.tasks.send_email[a53110d6-b704-4d9c-904a-8d74b99a33af] eta:[2012-03-10 01:32:44.971779-08:00]
[2012-03-09 17:32:40,992: INFO/MainProcess] Got task from broker: stabil.tasks.send_email[2363329b-47e7-4edd-b38e-b09fed232003] eta:[2012-03-10 01:32:46.972422-08:00]
Je suis totalement novice en matière de Celery et de RabbitMQ, donc tout conseil sur la manière de résoudre ce problème ou sur la manière de rechercher la cause de ce problème serait le bienvenu. C'est sur une machine virtuelle VMWare d'Ubuntu, mais l'horloge est réglée correctement. Merci de votre compréhension.