[Python] uWSGI spooler running tasks...

Roberto De Ioris roberto a unbit.it
Sab 12 Lug 2014 12:07:46 CEST


> Ciao,
>
> sto lavorando con gli spooler di uwsgi,
>
> ho scaricato Celery perché ha dei limiti nell'utilizzo dei processi come
> demoni. E nel lanciare dei task Fabric che usano parallel e
> multiprocessing
> non funziona.
>
> Tornando allo spooler di uwsgi, mi trovo bene,
> ho bisogno però di tenere d'occhio cosa sta facendo, quanti task sono in
> coda, quanti sono in esecuzione, etc... sarebbe carino che riuscissi a
> vedere anche il contenuto (il dizionario) dei task ancora in coda.
>
> Ma mi basta anche solo accedere alle statistiche senza usare il netcat :-)
> "spoolers":[
> {
>  "dir":"works/tasks",
> "pid":2633,
> "tasks":2,
>  "respawns":0,
> "running":1
> }
>  ]
>
> Perchè ho già trovato qualche magia nel mudulo uwsgi .. tipo
>>>> uwsgi.spoolers
> ('works/tasks',)
>>>> uwsgi.spooler_jobs()
> ['works/tasks/il_mio_job']
>>>> uwsgi.spooler_pid()
> 3389
>>>> uwsgi.parsefile('works/tasks/il_mio_job')
> {'execution_id': '4'}
>
> c'è modo usando il modulo python uwsgi di accedere alle informazioni di
> quali task sono in stato running?
>

Queste 2 funzioni non mi sono mai piaciute (infatti non sono documentate
da nessuna parte).

Servivano a un mio collaboratore e gliele ho aggiunte anni fa (solo il
plugin python le espone infatti).

Il bello dello spooler e' che e' tutto filesystem based, quindi per sapere
che succede si usano le primitive posix:

- scan della spooldir per sapere l'elenco dei task
- fcntl su ogni file per sapere se e' lockato (il che significa che e' un
task in corso) https://docs.python.org/2/library/fcntl.html
- parsing del dizionario uwsgi di ogni file per conoscere i parametri

tutto questo si potrebbe implementare in un unico tool con non piu' di 30
righe di python (o di ruby visto che ormai sei rubysta ;).

Scatenati :)

-- 
Roberto De Ioris
http://unbit.it


Maggiori informazioni sulla lista Python