<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">Ciao lista, ciao Marco De Paoli. Ecco un breve riassunto del passaggio da Celery a Django-Q</div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default"><div class="gmail_default"><font face="verdana, sans-serif">Primo giorno: Iniziata la transizione a Django-Q</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">1) Installato django-q, configurazione di base su redis</font></div><div class="gmail_default"><font face="verdana, sans-serif">2) Provato a far partire il primo task con "async". Perfetto. Funziona.</font></div><div class="gmail_default"><font face="verdana, sans-serif">3) Rimosso celery e tutta la merda che lo circonda (che soddisfazione!)</font></div><div class="gmail_default"><font face="verdana, sans-serif">4) Convertito tutti i ".delay" di celery ad "async" di django-q</font></div><div class="gmail_default"><font face="verdana, sans-serif">5) Rimosso tutti i task registrati con il decoratore (li usavo con celerybeat)</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">-> Faccio partire tests</font></div><div class="gmail_default"><font face="verdana, sans-serif">Dimenticato alcuni imports e altri riferimenti. Cancella! Cancella! Edita! Edita!</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">Ora i tests iniziano a darmi qualche problema. Ci sto lavorando. Ho 400 test circa e 80 mi stanno facendo il middlefinger.</font></div><div class="gmail_default"><font face="verdana, sans-serif">Inoltre i log di django_q non mi vanno a braccetto con gli altri log.</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">Secondo giorno</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">Aggiornato errori e aggiornati i tests.</font></div><div class="gmail_default"><font face="verdana, sans-serif">Ho dovuto, per ora, disabilitare il 'retry' in due tasks costruiti per celery che richiamavano se stessi in caso di errore. Vedrò di convertirli a Django-Q.</font></div><div class="gmail_default"><font face="verdana, sans-serif">Ho dovuto cambiare varie classi da subclass di TestCase a subclass di TransictionalTestCase per evitare problemi con la connessione al database.</font></div><div class="gmail_default"><font face="verdana, sans-serif">Come risultato, molto tests ora sono decisamente più lenti.</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">Due test in particolare li ho dovuti disabilitare. Passano se li lancio individualmente, ma non funzionano nel test harness.</font></div><div class="gmail_default"><font face="verdana, sans-serif">Ho risolto anche il problema del log. Stranamente devi registrare `django-q` nel logging, ma l'import viene fatto come `django_q`. L'ho scoperto leggendo il codice di django-q.</font></div><div class="gmail_default"><font face="verdana, sans-serif">Faccio il primo deploy, sostituendo tutto cio' che riguarda celery. La semplicita' e' tale che funziona da subito. Verifico sul server e si, i task vengono aggiunti e processati.</font></div><div class="gmail_default"><font face="verdana, sans-serif">Faccio partire l'autoscaling ed il secondo cluster viene aggiunto e i task mistati.</font></div><div class="gmail_default"><font face="verdana, sans-serif">Provo ad aggiungere lo scheduling direttamente da django admin. I task vengono processati. Niente doppioni, niente cazzate. Tutto funziona.</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">PRO:</font></div><div class="gmail_default"><font face="verdana, sans-serif">- Facilissimo da configurare</font></div><div class="gmail_default"><font face="verdana, sans-serif">- Usa Django Admin per i successful tasks, failed tasks e lo scheduling</font></div><div class="gmail_default"><font face="verdana, sans-serif">- Un solo processo da avviare sul server</font></div><div class="gmail_default"><font face="verdana, sans-serif">- Conversione del codice da Celery a Django-Q semplice</font></div><div class="gmail_default"><font face="verdana, sans-serif">- Usa Django!</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">CONTRO:</font></div><div class="gmail_default"><font face="verdana, sans-serif">- Non ha tutte le feature di Celery, ma a me sinceramente non serve</font></div><div class="gmail_default"><font face="verdana, sans-serif">- Non esiste un monitor dei tasks in coda a meno che non usi Django ORM come broker. Devi ripiegare su qualcosa per il tuo broker</font></div></div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_extra"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Karim N. Gorjux<br></div></div>
</div></div>