Ho appena installato sedano e sto cercando di seguire il tutorial:Sedano - Completa compito, ma non restituisce il risultato
Ho un file chiamato tasks.py con il seguente codice:
from celery import Celery
app = Celery('tasks', backend='amqp', broker='amqp://')
@app.task
def add(x, y):
return x + y
I RabitMQ installato (non ho configurato con esso dal momento che il tutorial non menzionava nulla di quel genere).
ho eseguire il server lavoratore sedano come segue:
celery -A tasks worker --loglevel=info
Sembra avvia normalmente (qui è l'output: http://i.imgur.com/qnoNCzJ.png)
Poi ho eseguito uno script con il seguente:
from tasks import add
from time import sleep
result = add.delay(2,2)
while not result.ready():
sleep(10)
Quando controllo lo result.ready()
ottengo sempre False (quindi il ciclo while sopra viene eseguito per sempre). Nei registri di Celery, tuttavia, tutto sembra a posto:
[2014-10-30 00:58:46,673: INFO/MainProcess] Received task: tasks.add[2bc4ceba-1319-49ce-962d-1ed0a424a2ce]
[2014-10-30 00:58:46,674: INFO/MainProcess] Task tasks.add[2bc4ceba-1319-49ce-962d-1ed0a424a2ce] succeeded in 0.000999927520752s: 4
Quindi il compito è stato ripreso e ha esito positivo. Eppure, result.ready()
è ancora Falso. Qualche idea sul perché questo potrebbe essere? Sono su Windows 7 e sto usando RabbitMQ. Grazie in anticipo.
Dove nel codice si esegue result.readh() controllare? Non hai incluso quella parte. Potrebbe anche valere la pena provare result = add.delay (2,2) .get (5), e vedere se otterrete risultati in questo modo. –
@Puciek Per 'result = add.delay (2,2) .get (5)' Ottengo 'result = add.delay (2,2) .get (5)' quindi suppongo che non riceva nulla. Se provo 'result.readh()' Ricevo l'errore 'AttributeError:' AsyncResult 'non ha attributo' readh'' – kyphos
Si prega di inviare il codice dove si controlla se i dati sono pronti, in quanto si tratta di inutili ipotesi. –