2013-10-08 2 views
6

Ho bisogno di chiamare un'attività celery (in tasks.py) da models.py, l'unico problema è, tasks.py importa models.py, quindi non posso importare tasks.py da models.py.Chiama il compito di Django sedano per nome

C'è un modo per chiamare un compito di sedici semplicemente usando il suo nome, senza doverlo importare? Una cosa simile è implementata per i campi ForeignKey per lo stesso motivo (evitando le importazioni circolari).

+3

Hai provato 'celery.execute.send_task ('mod.task_func', [arg1, arg2], {kwarg: kwvalue})'? – falsetru

risposta

13

Sì, c'è.

È possibile utilizzare:

from celery.execute import send_task  

send_task('my_task', [], kwargs) 

Assicurarsi che compito funzione ha un nome:

from celery import task 

@task(name='my_task') 
def my_task(): 
    ... 

Speranza che aiuta!

2

nel sedano 3+:

from celery import Celery 

app = Celery() 
app.send_task('my_task', [], kwargs)