Re: [Python] uWSGI spooler running tasks...

2014-08-08 Per discussione Marco De Paoli
ciao a tutti,
visto che avevo un esigenza simile, condivido alcuni snippet, magari a
qualcuno fa comodo...


Il giorno 12 luglio 2014 12:07, Roberto De Ioris robe...@unbit.it ha
scritto:


 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


for s in uwsgi.spoolers:
for fn in os.listdir(s):
filepath = os.path.join(s, fn)

(ok, questa era facile)



 - 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


import fcntl

def is_locked(filepath):
with open(filepath, a+) as f:
try:
fcntl.lockf(f.fileno(), fcntl.LOCK_EX|fcntl.LOCK_NB)
is_locked = False
except IOError, e:
is_locked = True
return is_locked

(qui ammetto che ci ho messo un po' di tempo a capire come fare...)

- parsing del dizionario uwsgi di ogni file per conoscere i parametri


uwsgi.parsefile(filepath)

(questo esercizio era già risolto in un'altra parte del libro ;-) )

ciao,
Marco
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] uWSGI spooler running tasks...

2014-08-08 Per discussione Gollum1
Il nome Marco sta acquisendo un significato particolare in questa lista...

Byez
-- 
Gollum1

teoro, dov'è il mio teoro...
http:\\www.gollumone.it
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] uWSGI spooler running tasks...

2014-07-12 Per discussione Roberto De Ioris

 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
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] uWSGI spooler running tasks...

2014-07-12 Per discussione Marco Beri
Il 12/lug/2014 12:08 Roberto De Ioris robe...@unbit.it ha scritto:

 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 ;).

Applausi.

Ciao.
Marco.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] uWSGI spooler running tasks...

2014-07-11 Per discussione Simone Federici
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?

Grazie
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] uWSGI spooler running tasks...

2014-07-11 Per discussione Marco Beri
2014-07-11 12:26 GMT+02:00 Simone Federici s.feder...@gmail.com:

 c'è modo usando il modulo python uwsgi di accedere alle informazioni di
 quali task sono in stato running?


Ma uwsgitop non ti piace? O ci devi accedere programmaticamente?

https://github.com/unbit/uwsgitop

Ciao.
Marco.

-- 
http://beri.it/ - Un blog
http://beri.it/i-miei-libri/ - Qualche libro
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] uWSGI spooler running tasks...

2014-07-11 Per discussione Simone Federici
2014-07-11 12:55 GMT+02:00 Marco Beri marcob...@gmail.com:

 Ma uwsgitop non ti piace? O ci devi accedere programmaticamente?

 https://github.com/unbit/uwsgitop


uwsgitop è fantstico, e accede alle statistiche esposte --stats :1717
però, no io ci devo accedere programmaticamente dalla webapp django che sto
scrivendo. Volevo capire se anziche aprire un socket sulla 1717 per
accedere al json delle statistiche c'è un modo diretto con le api uwsgi.

Inoltre per ogni task che ho in coda, mi piacerebbe sapere lo status. Se è
running.. per intenderci.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python