martedì 28 febbraio 2017

Django-rq comandi utili

Sono passato a django-rq
Funziona bene e fa il suo mestiere

A volte si creano situazioni un po' anomale (es. a causa di un worker che "esce male")

Ecco dunque alcuni comandi che possono essere utili
Ed esempio il seguente comando mostra a terminale la situazione di tutte le code:
$ rq info

Ci sono poi alcuni comandi che si possono dare da redis-cli...
Selezione de DB redis e visualizzazione di tutte le key utilizzate da rq
127.0.0.1:6379> select 0
127.0.0.1:6379> keys rq:*
Vedere tutte le proprietà di un job:

127.0.0.1:6379> hgetall rq:job:3f8a4ace-84a5-42ad-9a26-7ef0e5bae3ec
Lista di tutte le code utilizzate (non è detto che siano tutte quelle definite):
127.0.0.1:6379> smembers rq:queues
Lista dei job nella coda my-queue:
127.0.0.1:6379> zrange rq:finished:my-queue 0 100

Ricordarsi poi che per verificare la situazione si può ridare:
$ rq info

Riprendiamo ora il caso iniziale e chiediamoci come cancellare la situazione di un worker che è "uscito male"
127.0.0.1:6379> smembers rq:workers
127.0.0.1:6379> srem rq:workers rq:worker:"host-name"."pid"
dove "host-name" e "pid" sono rispettivamente il nome della macchina e il pid del processo che non esiste più

Per verificare poi la situazione direttamente da interfaccia admin di Django-RQ oppure con un:
$ rq info

Per vedere lo stato di un singolo job:
127.0.0.1:6379> hget rq:job:6ac9c3d2-ffa0-49c3-a2d2-3641248cb884 status

Ed infine due comandi super PERICOLOSI (use at your own risk!):
127.0.0.1:6379> flushdb  # rimuove tutte le key dal db corrente
127.0.0.1:6379> flushall  # rimuove tutte le chiavi da ogni db

Avete altre indicazioni? Scrivetele nei commenti, grazie!

lunedì 13 febbraio 2017

Collaborare costa

Ieri a casa mia si parlava di euristiche utilizzate dalla mente per decidere.
Si ragionava della diferenza tra euristiche, induzione e deduzione (... ebbene sì, la domenica a pranzo capita di tenere discussioni del genere 😊 )
Comunque oggi un amico mi ha segnalato questo: DeepMind: se due AI si scontrano, cosa succede?("I ricercatori Google hanno fatto sfidare macchine dotate di intelligenza artificiale a videogame che simulano dilemmi sociali. Il risultato apre spiragli di luce sulla futura capacità di adattamento dei robot")
Un paragrafo che mi ha colpito è: "In Wolfpack invece è stato evidenziato che per collaborare (scelta più opportuna) è richiesta molta potenza di calcolo. Solo l'intelligenza artificiale più sofisticata ha quindi propeso per la collaborazione con migliori risultati."

Come dire che le AI a volte non collaborano... "per fare meno fatica"!
Il che mi ha fatto pensare che in effetti anche per la mente umana l'attività del collaborare/co-lavorare, comporta un dispendio di energie psicoficiche che invece l' "andare avanti per la propria strada" non richiede