2012-03-21 3 views
4

Dans docs link expires à proposCéleri expire - exception Rise

# Task expires after one minute from now. 
add.apply_async(args=[10, 10], expires=60) 

J'utilise:

from tasks import add 
result = add.apply_async(args=[10, 10], expires=6000) 
printus(result) 

def printus(result): 
    print (result) #task id 
    print (result.ready()) # returns True if the task has finished processing. 
    print (result.result) # task is not ready, so no return value yet. 
    print (result.get()) # Waits until the task is done and returns the retval. 
    print (result.result) # direct access to result, doesn't re-raise errors. 
    print (result.successful()) # returns True if the task didn't end in failure.) 

tasks.py

from celery.task import task 
@task 
def add(x, y): 
    return x + y 

En celeryd:

[2012-03-21 19:50:03,012: WARNING/MainProcess] Skipping revoked task: tasks.add[4ffcff91-b12b-4bce-8d47-159314759859] 

Dans la console:

4ffcff91-b12b-4bce-8d47-159314759859 
True 

Traceback (most recent call last): 
    File "/home/echeg/Dropbox/my_py/opoveshun/tests/celery/run_task.py", line 53, in <module> 
    tr.countdown() 
    File "/home/echeg/Dropbox/my_py/opoveshun/tests/celery/run_task.py", line 26, in countdown 
    self.printus(result) 
    File "/home/echeg/Dropbox/my_py/opoveshun/tests/celery/run_task.py", line 48, in printus 
    print (result.get()) # Waits until the task is done and returns the retval. 
    File "/usr/local/lib/python2.7/dist-packages/celery/result.py", line 95, in get 
    interval=interval) 
    File "/usr/local/lib/python2.7/dist-packages/celery/backends/amqp.py", line 144, in wait_for 
    raise self.exception_to_python(meta["result"]) 
celery.exceptions.TaskRevokedError 

Pourquoi ai-je une exception? Le résultat n'a pas expiré

Si j'utilise:

result = add.apply_async(args=[10, 10]) 

tous ok

226107de-f739-4860-83bc-d843f17a257e 
False 
None 
20 
20 
True 

Répondre

5

celeryd pense que votre tâche a expiré:

[2012-03-21 19:50:03,012: WARNING/MainProcess] Skipping revoked task: tasks.add[4ffcff91-b12b-4bce-8d47-159314759859] 

Lorsqu'une tâche a expiré est ramassé par un travailleur, it revokes it sans exécution. Vérifiez vos paramètres de fuseau horaire? J'ai eu le problème inverse: les tâches n'expiraient pas quand elles auraient dû. Cela l'a corrigé pour moi:

CELERY_ENABLE_UTC = True 
CELERY_TIMEZONE = 'Etc/UTC'