2012-03-10 15 views
5

Ho ottenuto che le attività di Celery si svolgessero correttamente, utilizzando le impostazioni predefinite nelle esercitazioni e con rabbitmq in esecuzione su ubuntu. Tutto va bene quando pianifico un compito senza ritardi, ma quando do loro un eta, vengono programmati in futuro come se il mio orologio fosse spento da qualche parte.L'attività di sedano eta è disattivata, con rabbitmq

Ecco alcuni codice Python che chiede per le attività:

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) 

Quindi la prima uno dovrebbe andare immediatamente, e successivamente ogni due secondi. Guardando la mia console sedano, il primo avviene immediatamente, e poi gli altri sono in programma due secondi di distanza, ma a partire da domani:

[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] 

Sono totalmente nuovo sia Sedano e RabbitMQ così qualche consiglio su come risolvere questo o dove cercare la causa sarebbe grandioso. Questo è su una macchina virtuale VMWare di Ubuntu, ma ho l'orologio impostato correttamente. Grazie!

risposta

2

Penso che funzioni effettivamente come previsto. L'ora a sinistra (tra parentesi quadre e prima di INFO/MainProcess) viene presentata in locale, ma l'ora eta viene visualizzata come UTC. Per esempio:

prendere il tempo ETA presentato nella seconda riga del vostro output della console:

2012-03-10 01:32:42.971072-08:00 

Sottrai 8 ore (-08:00 è compensato il fuso orario) e si ottiene:

2012-03-09 17:32:42.971072 

Quale è solo 2 secondi dopo l'orario inviato:

2012-03-09 17:32:40,989 

Spero che lo faccia SE. Trattare spesso mi dà mal di testa.

+2

Grazie per la risposta, ma se fosse il caso, penserei che le attività sarebbero state eseguite. Il primo task (countdown = 0) viene eseguito, ma nessuno degli altri lo fa, dove dovrebbero essere eseguiti 2 secondi uno dopo l'altro. –

Problemi correlati