Obtenir task_id à l'intérieur d'une tâche de Céleri

C'est probablement une question stupide, mais sa m'a déconcerté à venir à partir d'un Rubis de fond.

J'ai un objet qui ressemble à ça quand j'ai essayer de l'imprimer.

print celery.AsyncResult.task_id
>>><property object at 0x10c383838>

Je m'attendais à la valeur réelle de la task_id propriété à imprimer ici. Comment puis-je obtenir la valeur réelle?

Mise à JOUR de 1

@celery.task
def scan(host):
    print celery.AsyncResult.task_id
    cmd = 'ps -ef'
    cm = shlex.split(cmd)
    scan = subprocess.check_output(cm)
    return scan

Meilleures Salutations.

Créer une instance de la classe. propertys sont descripteurs qui sont utilisés pour fournir de l'attribut comme l'accès à des getter/setter, mais ils fonctionnent au niveau de l'instance. Lors de l'accès de la classe que vous obtenez simplement l' property wrapper.
en fait, vous devez poster cela comme une réponse 🙂
À partir de la lettre-enveloppe et de sortie on dirait celery.AsyncResult doit être le nom d'une classe, et non une instance de l'une, et task_id est un attribut de propriété de cette classe, qui est ce que Bakuriu dit je crois.

OriginalL'auteur user1513388 | 2013-09-18