Re: [Python] Python e redirezione output

2011-05-19 Per discussione Valerio Pachera
Il 18 maggio 2011 15:33, Nicola Larosa  ha scritto:
> Le fate? ;-)
Scusate per gli errori di battitura ma ho scritto un po' di fretta.

> Nel senso che non l'hai notato su altre versioni? O hai provato solo quella?
Per ora ho provato solo su quella.

> Sembra il buffering, prova a passare l'opzione "-u" al comando:
Ok, vi farò sapere.

>> Un mio amico consiglia di scrivere i file di log damite l'oggetto file
>> di python:
> Se fai così, devo chiamare f.flush() dopo f.write(),
Ne deduco che le operazioni di scrittura su file avvengono in realtà
al termine dello script.
Ho fatto anche questa prova (con e senza flush)

f = open('/tmp/prova','w')
f.write ('uno')
f.flush()
time.sleep(10)
f.write('due')
f.flush()
time.sleep (10)
f.close()

su linux: tail -f /tmp/prova

senza flush il file viene scritto solo alla fine.

> o meglio ancora
> usare il modulo standard "logging", anzi è probabilmente il modo migliore
> in generale.

Bene, vado a leggere la documentazione.

Grazie
___
Python mailing list
[email protected]
http://lists.python.it/mailman/listinfo/python


Re: [Python] Python e redirezione output

2011-05-19 Per discussione Daniele Varrazzo
On Thu, 19 May 2011 09:02:41 +0200, Valerio Pachera 
wrote:

> Ne deduco che le operazioni di scrittura su file avvengono in realtà
> al termine dello script.

Nope. La scrittura avviene in un buffer di qualche Kb e quando è pieno i
suoi dati vengono flushati via. Se fai scrivere 100K di output al tuo
script vedrai che l'output avviene in blocchi.

-- 
Daniele Varrazzo - Develer S.r.l. 
http://www.develer.com
___
Python mailing list
[email protected]
http://lists.python.it/mailman/listinfo/python


[Python] Python developers in Italy

2011-05-19 Per discussione Pavlos Christoforou
Hello python-italy community,

First let me apologize in advance for posting in English (I do not yet
speak much Italian) and for perhaps the inappropriate content of this
posting. If we are indeed posting on the wrong forum we would greatly
appreciate it if one of you can point us to the right forum for such
matters.

In short our company is looking to hire 2 top python talents in Rome, Italy.

We (Point Nine)  are a small company (about 20 in all)  offering a
SaaS/outsourcing service to the global financial community. We focus
on middle office operations (data plumbing) and we are pretty much on
the cutting edge both in terms of financial product coverage and also
in technology usage. It's quite a tough field in terms of competition
as our main competitors are tier 1 banks like JP Morgan, Morgan
Stanley etc which have unlimited resources relative to us. We thus
rely on offering a service over and above the one offered by our
competitors which from an IT perspective it also implies we must be
able to remain very flexible and agile. And thus the use of python.
All our core systems are developed in python and are very carefully
crafted to deal with all the weird and wonderful things thrown at us
by our clients. Our approach to development is simple: hire the best,
keep the team small (max 5-6 core developers)  and keep communication
channels open at all times (ie no or little hierarchy). Our main
office is in London where there is a relatively deep pool of talent
but (because of relocation of one of the senior devs in Rome) we are
exploring the possibility of building a small dev team in Rome.  We
have just began our exploration so any feedback/quidance/pointers
would be greatly appreciated.

We will also be presenting at the upcoming EuroPython conference so we
hope to meet some of you there.


Thanking you in advance

-- 
Pavlos Christoforou

Point Nine Financial Technologies Ltd
Mobile:     +44 (0) 79 6696 2508

[email protected]
___
Python mailing list
[email protected]
http://lists.python.it/mailman/listinfo/python


Re: [Python] Python e redirezione output

2011-05-19 Per discussione Valerio Pachera
Il 19 maggio 2011 12:35, Daniele Varrazzo  ha scritto:
> Nope. La scrittura avviene in un buffer di qualche Kb e quando è pieno i
> suoi dati vengono flushati via. Se fai scrivere 100K di output al tuo
> script vedrai che l'output avviene in blocchi.

Ottimo, grazie della info.
Ho appena scoperto sys.stdout.flush().
Fa proprio al caso mio!
Non aspetto che si riempe il buffer ma faccio il flush ad ogni ciclo
(180 secondi).
___
Python mailing list
[email protected]
http://lists.python.it/mailman/listinfo/python


Re: [Python] Python e redirezione output

2011-05-19 Per discussione Manlio Perillo
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Il 19/05/2011 15:14, Valerio Pachera ha scritto:
> [...]
> Ottimo, grazie della info.
> Ho appena scoperto sys.stdout.flush().
> Fa proprio al caso mio!
> Non aspetto che si riempe il buffer ma faccio il flush ad ogni ciclo
> (180 secondi).

Vedi anche:
http://stackoverflow.com/questions/107705/python-output-buffering


Ciao  Manlio
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk3VGLgACgkQscQJ24LbaUS0HwCglTkzIkjx24ouiiK5W0uzfQY9
Y90AnRUdveoGGXRJVf9JnnZn7YscnnFI
=H8Q3
-END PGP SIGNATURE-
___
Python mailing list
[email protected]
http://lists.python.it/mailman/listinfo/python


Re: [Python] Python e redirezione output

2011-05-19 Per discussione Valerio Pachera
Il 19 maggio 2011 12:35, Daniele Varrazzo  ha scritto:
> Nope. La scrittura avviene in un buffer di qualche Kb e quando è pieno i
> suoi dati vengono flushati via. Se fai scrivere 100K di output al tuo
> script vedrai che l'output avviene in blocchi.

Aggiungo un'altra osservazione: se uccido il processo (con kill e non
kill -9), tutto quello che era nel buffer non viene scritto.
___
Python mailing list
[email protected]
http://lists.python.it/mailman/listinfo/python


Re: [Python] Python e redirezione output

2011-05-19 Per discussione Valerio Pachera
Il 19 maggio 2011 15:22, Valerio Pachera  ha scritto:
> Aggiungo un'altra osservazione: se uccido il processo (con kill e non
> kill -9), tutto quello che era nel buffer non viene scritto.

Ne aggiungo altre due, poi vado a leggere il link di Manlio :-)

./tmp.py &> tmp.log &
mv tmp.log tmp.log2
tail -f tmp.log2

Ho rinominato il file di log mentre ci scriveva dentro (ongi 5 sec col flush).
Mi aspettavo che il file venisse ricreato o che la redirezione si
interrompesse, invece l'output CONTINUA ad essere scriptto in tmp.log2
!

Al contrario

./tmp.py &> tmp.log &
gzip tmp.log
ls tmp.log*
  tmp.log.gz

Se comprimo il file come farebbe il programma logrotate, il file di
log non viene ricreato né va ascrivere su tmp.log.gz.
La redirezione, a mio avviso, si interrompe ma lo script continua a girare.
___
Python mailing list
[email protected]
http://lists.python.it/mailman/listinfo/python


Re: [Python] Python e redirezione output

2011-05-19 Per discussione Daniele Varrazzo
On Thu, 19 May 2011 15:30:04 +0200, Valerio Pachera 
wrote:
> Il 19 maggio 2011 15:22, Valerio Pachera  ha scritto:
>> Aggiungo un'altra osservazione: se uccido il processo (con kill e non
>> kill -9), tutto quello che era nel buffer non viene scritto.
> 
> Ne aggiungo altre due, poi vado a leggere il link di Manlio :-)
> 
> ./tmp.py &> tmp.log &
> mv tmp.log tmp.log2
> tail -f tmp.log2
> 
> Ho rinominato il file di log mentre ci scriveva dentro (ongi 5 sec col
> flush).
> Mi aspettavo che il file venisse ricreato o che la redirezione si
> interrompesse, invece l'output CONTINUA ad essere scriptto in tmp.log2
> !
> 
> Al contrario
> 
> ./tmp.py &> tmp.log &
> gzip tmp.log
> ls tmp.log*
>   tmp.log.gz
> 
> Se comprimo il file come farebbe il programma logrotate, il file di
> log non viene ricreato né va ascrivere su tmp.log.gz.
> La redirezione, a mio avviso, si interrompe ma lo script continua a
girare.

Puoi cancellare o rinominare il file dal file system, ma questo non cambia
il file descriptor che python tiene aperto. Se ad esempio cancelli il file
che python tiene aperto, praticamente metti il suo refcount a 0, e il file
viene tenuto in vita solo dal processo. All'uscita del processo, questo
sarà perso. Come curiosità, questo rende possibile salvare un file
cancellato per sbaglio se il processo lo tiene aperto: il primo file aperto
dal processo "pid" si può trovare in /proc/pid/fd/3 per esempio (0,1,2 sono
stdin/out/err) e il contenuto può ancora essere copiato da lì.

Se vuoi mettere da parte un risultato parziale del file, devi chiuderlo e
riaprirlo in append ogni volta.

Penso che in questo libro

ci sia "tutto quello che non volevate sapere sui file descriptor ma ve
l'hanno voluto dire per forza"... ma non ce l'ho sottomano per controllare.


-- 
Daniele Varrazzo - Develer S.r.l. 
http://www.develer.com
___
Python mailing list
[email protected]
http://lists.python.it/mailman/listinfo/python