Uso il sedano con MySQL
. Voglio memorizzare l'ID attività come un numero intero semplice in un database o in una variabile di sedano task
. Come lo posso fare?Memorizzazione di un ID attività per ogni attività di sedano nella banca dati
risposta
Perché non creare un modello di attività di sedano e salvare un ID di attività di tipo sedano su tale modello?
class CeleryModel(models.Model):
celery_task_id = models.CharField(max_length = 50, unique=True)
Poi:
def some_celery_task():
result = celery_task.delay()
celery_task = CeleryModel(celery_task_id = result.id)
celery_task.save() # added save line
tuo valore intero sarebbe allora: celery_task.id
per corrispondere con l'attuale, celery_task_id unico.
UPDATE: un altro modo ...
First python manage.py inspectdb > inspectdb.py
. All'interno di tale file troverai:
class CeleryTaskmeta(models.Model):
id = models.IntegerField(primary_key=True)
task_id = models.CharField(max_length=765, unique=True)
status = models.CharField(max_length=150)
result = models.TextField(blank=True)
date_done = models.DateTimeField()
traceback = models.TextField(blank=True)
hidden = models.IntegerField()
meta = models.TextField(blank=True)
class Meta:
db_table = u'celery_taskmeta'
Avanti, python manage.py startapp celery_model
. Metti questo file nel file models.py. Io uso il sud, quindi il mio ultimo passaggio sarebbe python manage.py convert_app celery_model
. Tuttavia, non è necessario. Ora hai accesso al livello django a questo dato sedimentario, e puoi leggere la chiave primaria per ogni attività come valore intero. Per esempio
>>> ct = CeleryTaskmeta.objects.get(id=1)
>>> for k,v in ct.__dict__.items(): print k,v
...
status SUCCESS
task_id 2fa95f24-7640-434c-9fef-0732ac1d23c7
date_done 2013-02-17 19:22:56+00:00
traceback None
_state <django.db.models.base.ModelState object at 0x10263fa90>
meta eJxrYKotZAzlSM7IzEkpSs0rZIotZC7WAwBREgb9
result gAJLBC4=
hidden 0
id 1
Qualcuno intelligente saprebbe come rendere il vostro CeleryTaskmeta
un modello di sola lettura, perché non credo che si vorrebbe manomettere il datatable.
UPDATE: per l'ultima parte della tua domanda:
>>> from celerytest.tasks import add
>>> result = add.delay()
>>> result.int_id = 1
>>> for k,v in result.__dict__.items(): print k,v
...
parent None
app <Celery default:0x10264df10>
task_name celerytest.tasks.add
int_id 1
id 01503afd-d196-47af-8e10-e7dc06603cfc
backend <djcelery.backends.database.DatabaseBackend object at 0x1026842d0>
Per ottenere l'ID attività sedano quando viene avviato il compito faccio la seguente:
process_task = my_task.apply_async(args=[args])
task_id = process_task.task_id
dove my_task è un metodo all'interno tasks.py
- 1. sedano conteggio delle attività
- 2. Informazioni sul prefetch delle attività di sedano
- 3. Esempi di Django e Sedano: Attività periodiche
- 4. django sedano terminare sottoprocessi di attività
- 5. Come strutturare le attività di sedano
- 6. Inserimento nella banca dati
- 7. Priorità attività in sedano con redis
- 8. Imposta utente_remoto per un insieme di attività nella cartella di gioco Ansible senza ripeterlo per attività
- 9. Memorizzazione di attività degli utenti in Django
- 10. pulizia attività sedano con DB backend
- 11. utilizzando i metodi di classe come attività di sedano
- 12. In sedano come ottenere lo stato dell'attività per tutte le attività per nome attività specifico?
- 13. Attività di rastrellamento per aggiungere dati predefiniti
- 14. Modellazione di valuta nella banca dati
- 15. Sedano: limite di velocità sulle attività con gli stessi parametri
- 16. STPrivilegedTask chiedi la password per ogni attività
- 17. Come aggiungere dinamicamente/rimuovere le attività periodiche di sedano (celerybeat)
- 18. Verifica login su ogni attività
- 19. Store IPv6 nella banca dati
- 20. Attività di profilatura di Celery
- 21. Inserire record di set di dati nella banca dati
- 22. Sedano - Get compito id per l'attività corrente
- 23. sedano - Attività che devono essere eseguite con priorità
- 24. più caricatori nella stessa attività
- 25. gestione delle righe cronologiche nella banca dati
- 26. WooCommerce: ricerca dei prodotti nella banca dati
- 27. Esegui attività ogni tanto all'interno di un processo
- 28. Rails: memorizzare le traduzioni nella banca dati
- 29. Crittografia dei dati per l'archiviazione nella banca dati
- 30. Conservare il certificato X509 nella banca dati
Grazie per la spiegazione accurata e pulita! – pynovice
Il problema è che voglio recuperare task_id all'avvio del processo. Risulta che i dati sono scritti nella tabella di CeleryTaskMeta solo dopo che il lavoro è stato completato con successo. – pynovice
@Cole come si memorizzano i risultati di un scrap asincrono nel database? – losee