Re: [Python] salvare file da stream TCP

2010-08-31 Thread Giampaolo Rodolà
Il 31 agosto 2010 16:43, ugaciaka  ha scritto:
> Salve ragazzi,
>
>
> Ho un vecchissimo programma che lancia via TCP/IP dei file.
>
> Vorrei scrivere un semplice script che intercetti questo stream e
> salvi questi file in una directory.
>
> Non so cosa usare a dire la verità, ho visto SocketServer ma non so se
> fa al caso mio.
>
> Qualcuno ha del semplice codice da proporre? Anche cercando con google
> non trovo niente che si avvicini a quello che voglio realizzare.
>
> Grazie mille.
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>

In pratica devi fare un server.
Puoi dare un occhio a SocketServer, asyncore, socket e Twisted.
Se sei totalmente a digiuno di questi concetti puoi cominciare con questo:
http://docs.python.org/library/socket.html#example

--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] salvare file da stream TCP

2010-09-01 Thread Giampaolo Rodolà
In tal caso, essendo il task molto semplice, il mio consiglio è quello
di scrivere un semplice server coi cari buon vecchi socket.
Col server di esempio mostrato nella documentazione hai praticamente
gia fatto tutto.
Riguardo il come intercettare "FINE_FILE" è molto semplice.
Con socket.recv() leggi i dati dal socket un tot alla volta, li salvi
da qualche parte e poi implementi la logica per "dividerli" in base a
FINE_FILE.


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/

Il 31 agosto 2010 19:18, ugaciaka  ha scritto:
> Rispondo un po' a tutti e intanto vi ringrazio per le risposte qui datemi.
>
> Da quanto ne so, scusate ma non posso proprio essere più preciso, c'è
> un software (sviluppato tanto tanto tempo fa, installato in una
> galassia lontana lontana) che spedisce via TCP/IP dei file xml (più
> che altro è un flusso).
>
> Il server che intercetta il tutto esiste già: è scritto in Delphi 6 e
> usa i componenti Indy, per sapere quando finisce un file e ne inizia
> un altro (se non ho mail interpretato il codice) controlla man mano se
> c'è la stringa FINE_FILE (il client remoto la inserisce apposta questa
> stringa).
>
> Purtroppo dopo anni di onorato servizio, forse per qualche
> aggiornamento windows ma nessuno ha capito perché e io ho rinunciato,
> tutto questo non funziona più perché vengono sollevate eccezioni di
> una dll di windows (ntdll.dll). Ho controllato con Wireshark e il
> flusso arriva corretto, quindi è colpa del server.
>
> Visto che a noi serve anche solo un semplice script che salvi questi
> file da qualche parte ho pensato subito a Python, domani leggo meglio
> questi esempi http://docs.python.org/library/socket.html#example ma
> non vedo come "spezzare" all'arrivo di una stringa ben precisa ...
>
> Alla luce di queste precisazioni, che non ho potuto dare prima
> purtroppo, chiedo ulteriori lumi a riguardo.
>
> Grazie :-)
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] salvare file da stream TCP

2010-09-01 Thread Giampaolo Rodolà
Il tuo problema è diverso in quanto ti vuoi inserire in uno stream tra
due socket.
Per questo genere di cose, anzichè i socket RAW, ti possono tornare
decisamente più utili le libpcap.
Per Python ne esistono diversi binding (io ho utilizzato pcapy:
http://oss.coresecurity.com/projects/pcapy.html).

--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/

Il 01 settembre 2010 10:25, Massimo Di Stefano
 ha scritto:
> Ciao,
>
> sto cercando di affronare un problema simile,
> per cui ho pensato sia inutile aprire un nuovo topic
>
> Il problema riguarda la cattura di alcuni messaggi "stringhe xml"
> che due applicazioni si lanciano attraverso TCP sulla mia rete locale.
>
> Ho una prima applicazione (sul portatile host : 192.168.1.2 porta : 7000) che 
> manda un messaggio ad una seconda applicazione che la riceve (sul desktop 
> host : 192.168.1.4 porta : 7000)
>
> Vorrei "leggere" (print a schermo) i messaggi che la prima applicazione
> manda alla seconda
>
> Ho controllato che le due applicazioni siano collegate,
> la comunicazione avviene senza problemi
>
>
> il codice che sto provando ad usare è :
>
>
> from socket import *
> s = socket.socket()
> host = '192.168.1.2'
> port = 7000
> addr = host, port
> s = socket(AF_INET, SOCK_STREAM)
> s.connect(addr)
> while 1:
>        data = s.recv(1024)
>        print data
>
> ma non mi printa nulla,
> avete idea di dove sto sbogliando?
>
> grazie per qualsiasi aiuto!
>
> Massimo.
>
> Il giorno 01/set/2010, alle ore 09.02, Marco Dalla Stella ha scritto:
>
>> Il 31 agosto 2010 18:02, Giampaolo Rodolà  ha scritto:
>>> In pratica devi fare un server.
>>> Puoi dare un occhio a SocketServer, asyncore, socket e Twisted.
>>> Se sei totalmente a digiuno di questi concetti puoi cominciare con questo:
>>> http://docs.python.org/library/socket.html#example
>>
>> Consiglierei anch'io Twisted. E' un po' "complesso", ma se lo
>> padroneggi può tornarti molto utile in futuro.
>>
>> Saluti,
>> --
>> Marco Dalla Stella
>> web: http://thediracsea.org
>> twitter: http://twitter.com/kra1iz3c
>> ___
>> Python mailing list
>> Python@lists.python.it
>> http://lists.python.it/mailman/listinfo/python
>
>
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Software famosi scritti in Python

2010-11-03 Thread Giampaolo Rodolà
Youtube dovrebbe utilizzarlo in maniera massiccia:
http://www.gooli.org/blog/youtube-runs-on-python/


--- Giampaolo
code.google.com/p/pyftpdlib/
code.google.com/p/psutil/

Il 01 novembre 2010 20:49, Alberto Biaggiotti ABX  ha scritto:
> Come da oggetto chi sa indicare quali siano i software più o meno famosi
> scritti in Python?
>
> Cordiali Saluti
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] Annuncio: rilasciata psutil 0.2.0

2010-11-13 Thread Giampaolo Rodolà
Salute a tutti,
dopo svariati mesi di faticoso sviluppo sono lieto di annunciare il
rilascio della versione 0.2.0 di psutil:
http://code.google.com/p/psutil

=== About ===

psutil è un modulo che permette di ottenere informazioni riguardo i
processi in esecuzione e il sistema operativo (CPU, memoria) tramite
Python, implementando diverse funzionalità offerte da tools da linea
di comando quali ps, top, lsof e netstat.
psutil supporta Linux, Windows, OS X e FreeBSD, sia 32-bit che 64-bit
e supporta Python da 2.4 a 3.2, utilizzando un'unica code-base.


=== Migliorie ===

Le principali migliorie di questa versione includono:

 * file aperti dal processo
 * connessioni TCP/UDP aperte dal processo
 * figli
 * exeguibile
 * numero di thread lanciati
 * metodi send_signal() e terminate()
 * supporto per Windows 64-bit (XP, Vista, 7) e Windows 2000
 * supporto per mingw

=== Links ===

* Home page: http://code.google.com/p/psutil
* Mailing list: http://groups.google.com/group/psutil/topics
* Source tarball: http://psutil.googlecode.com/files/psutil-0.2.0.tar.gz
* Windows Installer (Python 2.7):
http://psutil.googlecode.com/files/psutil-0.2.0.win32-py2.7.exe
* Api Reference: http://code.google.com/p/psutil/wiki/Documentation



--- Giampaolo Rodolà
http://code.google.com/p/pyftpdlib
http://code.google.com/p/psutil
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Python IDE

2010-12-29 Thread Giampaolo Rodolà
Il mio IDE è Gedit con due plugin:

- rimozione degl spazi a fine linea quando salvi
- "pdb[TAB]" che viene espanso in "import pdb; pdb.set_trace()"

...fine. =)

--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Porting

2011-01-07 Thread Giampaolo Rodolà
Come gia detto, 2to3, però avere una test suite in questo caso è
praticamente d'obbligo.
2to3 ti converte solamente la sintassi, ma alcuni costrutti
(specialmente quelli riguardanti stringhe vs. bytes) te li devi fare a
mano.
Oltre a questo ti chiedo: perchè hai intenzione di fare questo porting?
Specialmente in ambito web questo può essere più uno svantaggio che un
vantaggio.
Mi riferisco a tutti quei tool non ancora portati a py3, esempio a
caso, PIL, di cui potresti aver bisogno.


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/


2011/1/5 Massimiliano Giovine :
> Ho scritto del codice in python 2.7 usando un webserver e ora non
> funziona più niente per diversi motivi. Esiste un tool che mi permetta
> di portare tutto in python 3.1?
> Grazie mille!
>
> --
> -Massimiliano Giovine
> Aksel Peter Jørgensen dice: "Why make things difficult, when it is
> possible to make them cryptic and totally illogic, with just a little
> bit more effort?"
> Blog: http://opentalking.blogspot.com
> "Linus Torvalds doesn't die, he simply returns zero."
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Os.popen e comando route add

2011-01-17 Thread Giampaolo Rodolà
Spesso mi porto dietro questa funzione in molti script per fare lavori
sporchi/veloci:

import subprocess, warnings

def sh(cmdline):
"""run cmd in a subprocess and return its output.
raises RuntimeError on error.
"""
p = subprocess.Popen(cmdline, shell=True, stdout=subprocess.PIPE,
   stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
if p.returncode != 0:
raise RuntimeError(stderr)
if stderr:
warnings.warn(stderr, RuntimeWarning)
return stdout

 >>> sh("whoami")
 'giampaolo\n'
 >>> sh("blabla")
 Traceback (most recent call last):
   File "", line 1, in 
   File "_utils.py", line 12, in sh
 raise RuntimeError(stderr)
 RuntimeError: /bin/sh: blabla: command not found
 >>>

A partire da python 2.7 puoi usare subprocess.check_output() che però
trovo meno comoda:
http://docs.python.org/library/subprocess.html#subprocess.check_output


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/



Il 15 gennaio 2011 12:27, Paolo Bernardi  ha scritto:
> Tra le altre cose, se vuoi restare aggiornato, ti consiglio di dare
> un'occhiata al modulo subprocess, particolarmente alla sezione su come
> rimpiazzare le chiamate os.popen*:
>
> http://docs.python.org/library/subprocess.html#replacing-os-popen-os-popen2-os-popen3
>
> Con la popen, ad esempio, mi è capitato di fare qualcosa di simile:
>
> p = subprocess.Popen(['axel', '-o', file, self.url], shell=False,
> stdout=subprocess.PIPE)
> line = p.stdout.readline()
> while line != None and line != '' and not p.poll():
>    [...]
>    line = p.stdout.readline()
>
> In questo caso ovviamente mi serviva l'output riga per riga (man mano
> che axel avanzava), ma puoi anche leggere tutto in blocco.
>
> Paolo
>
> On Fri, 2011-01-14 at 12:03 +0100, Stefano Dal Pra wrote:
>> Ciao,
>> prova con os.popen3 :
>> stdin,stdou,stderr = os.popen("ping 151.1.1.1")
>>
>> dovresti scoprire che il SIOCADDRT compare con stderr.readline() ...
>>
>> Stefano
>
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
>
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] ANN: rilasciata pyftpdlib (Python FTP server library) 0.6.0

2011-01-26 Thread Giampaolo Rodolà
Sono lieto di annunciare il rilascio della versione 0.6.0 di Python
FTP Server library (pyftpdlib):
http://code.google.com/p/pyftpdlib/

== About ==

pyftpdlib è un modulo che permette di sviluppare agevolmente server
FTP/S asincroni in python.

== Novità ==

Questa nuova release include diverse importanti feature, tra cui:

 * supporto FTPS
 * parser da linea di comando
 * un sistema di logging standardizzato e configurabile
 * la possibilità di servire contemporanemente IPv4 e IPv6 utilizzando
un unico socket
 * possibilità di autenticarsi utilizzando gli utenti di sistema su
Unix e Windows
 * una classe UnixFilesystem che permette al client di uscire dalla
propria home directory e navigare il filesystem "reale"
 * velocità del canale comandi raddoppiata grazie all'opzione TCP_NODELAY
 * aggiunte callback on_login(), on_logout(),
on_incomplete_file_sent() e on_incomplete_file_received()

Una lista completa che include migliorie, bug fix e le istruzioni per
usare le nuove funzionalità è disponibile qui:
http://code.google.com/p/pyftpdlib/wiki/ReleaseNotes06

== Altri link utili ==

* Sorgenti: http://pyftpdlib.googlecode.com/files/pyftpdlib-0.6.0.tar.gz
* Documentazione: http://code.google.com/p/pyftpdlib/wiki/Tutorial
* FAQs: http://code.google.com/p/pyftpdlib/wiki/FAQ
* RFCs compliance paper: http://code.google.com/p/pyftpdlib/wiki/RFCsCompliance
* Bug tracker: http://code.google.com/p/pyftpdlib/issues/list


Ringrazio per l'attenzione,

--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] ANN: rilasciata psutil (python process utilities) 0.2.1

2011-03-21 Thread Giampaolo Rodolà
Salute a tutti,
sono lieto di annunciare il rilascio della versione 0.2.1 di psutil:
http://code.google.com/p/psutil

=== About ===

psutil è un modulo che permette di ottenere informazioni riguardo i
processi in esecuzione e il sistema operativo (CPU, memoria) tramite
Python, implementando diverse funzionalità offerte da tools da linea
di comando quali ps, top, lsof e netstat.
psutil supporta Linux, Windows, OS X e FreeBSD, sia 32-bit che 64-bit,
su Python da 2.4 a 3.2 utilizzando un'unica code-base.

=== Nuove features ===

* process I/O counters
* process wait() (aspetta che un processo termini e ritorna l'exit code)
* process get_threads() informazioni (id, user and kernel times)
riguardo i thread aperti dal processo
* process uids/gids (saved, real e effective)
* process "niceness" (priorità, get e set)
* stato dei processi (running, stopped etc...)
* process I/O "niceness" (priorità I/O)
* psutil.Popen, una nuova classe che offre un'interfaccia più
conveniente di subprocess.Popen

=== Esempio delle nuove features ===

>>> p = psutil.Process(7055)
>>> p.name
'python'
>>>
>>> str(p.status)
'running'
>>>
>>> p.uids
user(real=1000, effective=1000, saved=1000)
>>> p.gids
group(real=1000, effective=1000, saved=1000)
>>>
>>> p.nice
0
>>> p.nice = 10  # cambia priorità
>>> p.nice
10
>>>
>>> p.get_ionice()
ionice(ioclass=0, value=0)
>>> p.set_ionice(psutil.IOPRIO_CLASS_IDLE)  # cambia priorità I/O
>>> p.get_ionice()
ionice(ioclass=3, value=0)
>>>
>>> p.get_io_counters()
io(read_count=478001, write_count=59371, read_bytes=700416, write_bytes=69632)
>>>
>>> p.get_threads()
[thread(id=5234, user_time=22.5, system_time=9.2891),
 thread(id=5235, user_time=0.0, system_time=0.0),
 thread(id=5236, user_time=0.0, system_time=0.0),
 thread(id=5237, user_time=0.0707, system_time=1.2)]
>>>
>>> p.terminate()
>>> p.wait(timeout=3)
0
>>>


= psutil.Popen =

>>> import psutil
>>> from subprocess import PIPE
>>> p = psutil.Popen(["/usr/bin/python", "-c", "print 'hi'"], stdout=PIPE)
>>> p.name
'python'
>>> p.uids
user(real=1000, effective=1000, saved=1000)
>>> p.username
'giampaolo'
>>> p.communicate()
('hi\n', None)
>>> p.terminate()
>>> p.wait(timeout=2)
0
>>>


=== Links ===

* Home page: http://code.google.com/p/psutil
* Mailing list: http://groups.google.com/group/psutil/topics
* Sorgenti: http://psutil.googlecode.com/files/psutil-0.2.1.tar.gz
* Documentazione: http://code.google.com/p/psutil/wiki/Documentation


--- Giampaolo Rodola'

http://code.google.com/p/pyftpdlib
http://code.google.com/p/psutil/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] popen e netuse

2011-06-06 Thread Giampaolo Rodolà
Non so di preciso cosa faccia net use ma se conosci il PID del
processo che ti aspetti che apra la connessione puoi utilizzare psutil
[1] per verificare che la connessione su un dato indirizzo:porta sia
attiva e in stato "established".
Esempio:

 >>> import os, socket, psutil
 >>> thisproc = psutil.Process(os.getpid())
 >>> thisproc.get_connections()
 []
 >>> sock = socket.create_connection(('google.it', 80))
 >>> thisproc.get_connections()
 [connection(fd=3, family=2, type=1, local_address=('10.0.0.1',
44467), remote_address=('74.125.39.104', 80), status='ESTABLISHED')]
 >>>

[1] http://code.google.com/p/psutil/

Saluti,

--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/



2011/5/26 Filadelfo Fiamma :
> Ciao a tutti,
>
> ho uno script Python che apre la connessione, sotto Winzozz, ad una
> cartella remota. Vado a sfruttare il comando di sistema net use per
> verificare lo stato della connessione, eventualmente rimuoverla e
> aggiungerla.
> Il problema che vi espongo nasce nel momento in cui lo stato della
> connessione passa da OK a DISCONNECTED, prima di addentrarmi nel
> problema vi mostro la sequenza dei comandi che vengono lanciati:
>
>
> #cmd = 'net use path_remoto password /USER: user /'
> #cmd = 'net use path_remoto password /DELETE'
> #cmd = 'net use'
>
> #Apre la popen
> def checkRemoteConnection(self,cmd):
>        f = None
>        try:
>            f = os.popen(cmd)
>        except Exception:
>            print 'Problem in popen'
>            self.writeLog('Problem in popen\n')
>            return False
>        else:
>            self._file_popen = f
>            return True
>
>
> #Interpreta il contenuto della popen, esaminando lo status
> def interpreter(self,fp,type='r'):
>        l = fp.readlines()
>        if(type == 'r'):
>            for i in range(len(l)):
>                if(len(l[i])>1):
>                    self.writeLog('interpreter: reading popen.. 
> '+str(l[i])+'\n')
>                    if(str(l[i]).find(str(self.__remote_path))!=-1):
>                        if(str(l[i]).find('OK')!=-1):
>                            return True
>            return False
>        else:
>            for i in range(len(l)):
>                self.writeLog('interpreter: reading popen.. '+str(l[i])+'\n')
>            return True
>
>
> #Controlla i due metodi soprastanti
> def isConnected(self, cmd, type = 'r'):
>        if not self.checkRemoteConnection(cmd):
>            return False
>
>        if(self._file_popen!=None):
>
>            self.writeLog('isConnected: Popen result is None\n')
>            return False
>        else:
>            ret =self.interpreter(self._file_popen,type)
>
>            if(self._file_popen!=None):
>                try:
>                    self._file_popen.close()
>                except Exception:
>                    print 'fp.close() : exception in close popen()'
>
>            if(ret):
>                return True
>            else:
>                return False
>
>
> Ho inoltre tre metodi (test(),submit(),delete()), che ometto, che non
> fanno altro che scrivere opportunamente la stringa cmd.
>
> if __name__ == '__main__':
>
>    net = NetUse(user,pwd,remotepath)
>
>    if(len(sys.argv)>1):
>        if(len(sys.argv)==2):
>            if(sys.argv[1]=='delete'):
>                if(net.test()):
>                    if(net.delete()):
>                        print 'Connessione remota rimossa'
>                    else:
>                        print 'Impossibile rimuovere connessione remota'
>    else:
>        if(not net.test()):
>            print 'Not connected'
>            if(not net.submit()):
>                print 'Error in connection'
>            else:
>                if(not net.test()):
>                    print 'Error in connection..try again'
>                    net.delete()
>                    time.sleep(2)
>                    net.submit()
>                    if(not net.test()):
>                        print 'Error in connection..'
>                    else:
>                        print 'Successfully Connected'
>                else:
>                    print 'Successfully Connected'
>        else:
>            print 'Already Connected'
>
>
> Questo script, in caso di stato della connessione DISCONNECTED, mi
> restituusce un'eccezione su self._file_popen.close() (Metodo
> isConnected)
> Sapreste indicarmi se opero in modo sbagliato o se invece questa
> particolare situazione (STATUS DISCONNECTED) può essere gestita in
> modo differente ed indolore? Sottolineo che questo problema non lo
> riscontro su ogni macchina in cui viene eseguito, ma solo su alcune,
> senza apparente motivo.
>
> Vi ringrazio moltissimo
> Ciao e buona giornata
>
> FF
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/list

Re: [Python] ftp.retrlines('LIST')

2011-07-14 Thread Giampaolo Rodolà
Non ho capito bene quale sia la tua domanda, ad ogni modo, alcuni consigli:

- utilizza MLSD al posto di LIST per ottenere un listing
standardizzato e parsabile (tutti i server "decenti" lo dovrebbero
supportare)

- MLSD, tra le varie cose, ritorna il tipo (e.g. file o directory) per
cui puoi filtrare per i soli file; oltre al nome include anche la
dimensione, cosa che probabilmente vuoi anche sapere

- ftplib di python 3.3 supporterà il suppprto a MLSD (ne parsa
l'output e ritorna un iteratore di (nome_file, {parametri...}) tuple:
  http://bugs.python.org/issue11072
  Se utilizzi python 2.x penso che puoi copy/incollare la patch così
com'è e dovrebbe funzionare.


Ciao,

 --- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/


Il 13 luglio 2011 01:06, Freeze NorthPole  ha scritto:
> Ciao a tutti,
> eccomi ancora una volta a chiedere "ai grandi" una  mano,
> ecco quello che sto cercando di realizzare... collegarmi ad un server ftp,
> avere un elenco dei file sul server e confrontare il tutto con i file
> presenti sul pc (con una string.find )
> per fare questo stavo cercando di memorizzare in una variabile il risultato
> di ftp.retrlines('LIST') ma da quello che vedo se cerco di fare qualcosa del
> tipo
>
> pippo = ftp.retrlines('LIST')
> print pippo
>
>
> ottengo qualcosa del tipo
>
>  "226-Options: -a -l
> 226 46 matches total"
>
>
>
> conoscete qualche comando più opportuno per fare in modo di ottenere un
> elenco dei file sul server ?
> oppure esiste qualche libreria di python che mi permette di fare il
> confronto dei file sul pc con quelli sul server?
> Grazie mille a tutti ancora una volta e scusate se risulto un po' fumoso :)
>
>
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
>
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] listdir

2011-07-21 Thread Giampaolo Rodolà
Il giorno 21 luglio 2011 09:54, Giovanni Marco Dall'Olio <
dalloli...@gmail.com> ha scritto:

> Puoi usare glob.iglob, che ritorna un iteratore e non una lista.
>
> # esempio1:
> for filename in os.listdir('.'):
>   print filename
>
> # esempio2:
> for filename in glob.iglob('.'):
>   print filename
>
> la differenza tra esempio1 e esempio2 è che nel primo viene generata
> tutta la lista dei file nella directory (occupando memoria), mentre in
> esempio2 viene preso un file alla volta (con una occupazione di
> memoria minima).
>

Non ci dovrebbe essere nessuna differenza dato che internamente glob.iglob
non fa altro che chiamare os.listdir().
http://hg.python.org/cpython/file/default/Lib/glob.py


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/ 
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] ANN: rilasciata psutil 0.4.0

2011-10-29 Thread Giampaolo Rodolà
Salute a tutti,
sono lieto di annunciare il rilascio della versione 0.4.0 di psutil:
http://code.google.com/p/psutil

=== About ===

psutil è una libreria che permette di ottenere informazioni riguardo i
processi in esecuzione e il sistema operativo (CPU, memoria, dischi,
rete) implementando diverse funzionalità offerte da tool da linea di
comando quali ps, top, lsof, netstat e altri.
Supporta Linux, Windows, OSX e FreeBSD, sia 32-bit che 64-bit, su
Python da 2.4 a 3.2 utilizzando un'unica code-base.

=== Nuove features ===

Oltre a fixare diversi bug ad alta priorità questa release offre 2
nuove importanti funzionalità: i contatori di utilizzo disco e
interfacce di rete con i quali è possibile scrivere applicazioni di
monitoraggio di questo tipo:
http://code.google.com/p/psutil/source/browse/trunk/examples/iotop.py
http://code.google.com/p/psutil/source/browse/trunk/examples/nettop.py

...e qui alcuni screenshots:
http://code.google.com/p/psutil/#Example_applications

=== Altre migliorie ==

- Process.get_connections() ha un nuovo parametro "kind" per filtrare
le connessioni in base alla famiglia (ipv4/6) e il tipo (TCP/UDP).
- Process.wait() può essere utilizzato in modo non bloccante passando
timeout=0 come parametro.
- Installer Python 3.2 per Windows 64-bit
- (FreeBSD) aggiunto supporto per determinare la directory di lavoro
corrente del processo (Process.getcwd())
- (FreeBSD) Process.get_open_files() (files aperti dal processo) è
stata riscritta in C (non richiede più lsof)

Per una lista completa dei cambiamenti si veda:
http://psutil.googlecode.com/svn/trunk/HISTORY

=== New features by example ===

...Un po' di codice:

>>> import psutil
>>>
>>> psutil.disk_io_counters()
iostat(read_count=8141, write_count=2431, read_bytes=290203,
   write_bytes=537676, read_time=5868, write_time=94922)
>>>
>>> psutil.disk_io_counters(perdisk=True)
{'sda1' :iostat(read_count=8141, write_count=2431, read_bytes=290203,
 write_bytes=537676, read_time=5868, write_time=94922),
 'sda2' :iostat(read_count=811241, write_count=31, read_bytes=1245,
 write_bytes=11246, read_time=768008, write_time=922)}
>>>
>>>
>>> psutil.network_io_counters()
iostat(bytes_sent=1270374, bytes_recv=7828365,
   packets_sent=9810, packets_recv=11794)
>>>
>>> psutil.network_io_counters(pernic=True)
{'lo': iostat(bytes_sent=800251705, bytes_recv=800251705,
  packets_sent=455778, packets_recv=455778),
 'eth0': iostat(bytes_sent=813731756, bytes_recv=4183672213,
packets_sent=3771021, packets_recv=4199213)}
>>>
>>>
>>> import os
>>> p = psutil.Process(os.getpid())
>>> p.get_connections(kind='tcp')
[connection(fd=115, family=2, type=1, local_address=('10.0.0.1', 48776),
remote_address=('93.186.135.91', 80), status='ESTABLISHED')]
>>> p.get_connections(kind='udp6')
[]
>>> p.get_connections(kind='inet6')
[]
>>>

=== Links ===

* Home page: http://code.google.com/p/psutil
* Sorgenti: http://psutil.googlecode.com/files/psutil-0.4.0.tar.gz
* Documentazione: http://code.google.com/p/psutil/wiki/Documentation


Grazie dell'attenzione e ciao a tutti.

--- Giampaolo Rodola'

http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] R: R: Re: FTP - error: [Errno 110] Connection timed out

2011-11-23 Thread Giampaolo Rodolà
Il giorno 22 novembre 2011 17:36, marco...@libero.it
 ha scritto:
>
> Ho finalmente trovato la risposta, googlando ancora.
> Dopo la il login, basta aggiungere questa riga al codice:
>
> ftp.set_pasv(False)
>
> Praticamente questo comando indica al codice di usare la porta ftp standard..

Significa che prima stavi usando PORT (che è il male in terra) anzichè PASV.
Il fatto che tu abbia dovuto esplicitare ftp.set_pasv(False) a mano mi
fa pensare che stai usando una versione di python abbastanza vecchia,
dato che il default a PASV è stato introdotto in ftpdlib.py almeno da
Python 2.5, se non prima.
Per cui il mio consiglio, a prescindere da questo problema, è di
upgradare (2.7).


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] web: sync vs. async

2011-12-03 Thread Giampaolo Rodolà
Il 02 dicembre 2011 16:18, Daniele Varrazzo  ha scritto:
> Io ho messo 4 server in ascolto su 4 porte diverse: il primo sulla standard
> https 443 e altre 8444, 8445, 8446 (la bella copia sarebbe avere 4
> sub-domain, ma per ora abbiamo solo un certificato ssh).
>
> Quando un utente si connette, viene rediretto ad un certo nodo (id utente %
> n. nodi, per esempio). Da lì in poi tutti i link del programma sono
> relativi, per cui una volta che è andato sul server https://host:8445, ci
> resta. Il suo nodo di appartenenza è anche memorizzato al momento del login
> nella sua sessione del server: ad ogni richiesta viene controllato che sia
> sul server giusto e, se non lo è, gli viene servito un redirect per
> mandarcelo.
>
> Questa soluzione consente di usare tutte le cpu sulla macchina nella maniera
> migliore possibile: con diversi processi. Perché funzioni si assume che gli
> utenti non si scambino dati tra loro se non attraverso il database. Invece
> poiché un utente resta sempre sullo stesso server, i suoi dati di sessione
> sono sempre disponibili. Per scalare di più possiamo aggiungere nuovi
> processi (la nostra macchina ha 16 cpu) o anche aggiungere nuove macchine.

Una cosa di questo tipo non avrebbe ugualmente funzionato?

# pseudo codice
import multiprocessing
from somehttpd import HTTPServer

CPUS = multiprocessing.cpu_count()
server = HTTPServer()
# create child processes to act as workers
for x in range(CPUS - 1):
Process(target=server.serve_forever).start()
# main process also acts as a worker
server.serve_forever()


Se si, ti saresti evitato l'onere di ascoltare su porte multiple e
ovviamente tutta la complessità aggiuntiva che ne deriva.


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] web: sync vs. async

2011-12-06 Thread Giampaolo Rodolà
Il 03 dicembre 2011 16:23, Manlio Perillo  ha scritto:
>> Una cosa di questo tipo non avrebbe ugualmente funzionato?
>>
>> # pseudo codice
>> import multiprocessing
>> from somehttpd import HTTPServer
>>
>> CPUS = multiprocessing.cpu_count()
>> server = HTTPServer()
>> # create child processes to act as workers
>> for x in range(CPUS - 1):
>>     Process(target=server.serve_forever).start()
>> # main process also acts as a worker
>> server.serve_forever()
>>
>>
>> Se si, ti saresti evitato l'onere di ascoltare su porte multiple e
>> ovviamente tutta la complessità aggiuntiva che ne deriva.
>>
>
> Questo è essenzialmente l'approccio usato da Nginx.
>
> Però c'è un dettaglio subdolo: con questo metodo ciascun processo figlio
> chiama la accept sullo stesso file descriptor ereditato dal padre e ci
> potrebbero essere dei problemi subdoli.
>
> Ad esempio il problema chiamato "thundering herd" oppure (ma su questo
> non riesco a trovare dei riferimenti, l'ho letto dall'autore di Nginx)
> il sistema operativo potrebbe **non** distribuire il carico equamente su
> tutti i sotto processi.
>
>
> Ciao  Manlio

Riusciresti a darmi qualche dettaglio in più?
Sono lì lì per portare questa modifica in produzione.
Effettuando dei test finora non mi è sembrato di notare alcunchè di
"subdolo" o fuori dalla norma.


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] web: sync vs. async

2011-12-06 Thread Giampaolo Rodolà
Il 06 dicembre 2011 19:38, Manlio Perillo  ha scritto:
>> Riusciresti a darmi qualche dettaglio in più?
>
> Per il "Thundering herd problem", trovi una breve descrizione su Wikipedia:
> http://en.wikipedia.org/wiki/Thundering_herd_problem
>
> Vedi anche:
> http://www.citi.umich.edu/projects/linux-scalability/reports/accept.html
>
>
> Il problema è menzionato anche nel libro "UNIX Network Programming".
> In particolare, oltre al problema di prestazioni che per pochi processi
> non dovrebbe essere preoccupante, c'è un altro problema con quello che
> fai: chiamare accept sullo stesso file descriptor ereditato potrebbe
> **non** funzionare su alcuni sistemi; in questi casi hai bosogno di
> serializzare la chiamata con un lock o mutex (che è quello che,
> opzionalmente, fa Nginx [1]).
>
> Ti consiglio di fare dei test e di documentarti meglio (io non so
> nemmeno cosa è cambiato in versioni recenti di Linux).

Grazie, non ero minimamente a conoscenza del problema.
Leggerò partendo dagli spunti che mi hai dato.
Per la cronaca, tornado dovrebbe soffrire dello stesso "problema",
solo che anzichè utilizzare multiprocessing fa il tutto a mano con
fork(), che ipotizzo sia concettualmente identico:
https://github.com/facebook/tornado/blob/master/tornado/process.py#L64
https://github.com/facebook/tornado/blob/master/tornado/netutil.py#L151


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [OT]: PHP critique [ERA] Re: Python e html

2011-12-07 Thread Giampaolo Rodolà
Il 07 dicembre 2011 14:30, Andrea Francia  ha scritto:
> 2011/12/6 Carlo Miron 
>>
>> 2011/12/6 Carlos Catucci :
>> > Inoltre hai la concatenazione di stringhe con il . al post del logico +
>> > (fare overloading dell'operatore era cosa complessa si vede).
>>
>> Piu` che altro il problema e` che
>>
>> php > print '3'+2;
>> 5
>> php > print '3a'+2;
>> 5
>> php > print '3viso'+2;
>> 5
>> php > print 'ciao'+2;
>> 2
>
> In questo modo non devi fare la conversione stringa->numero e non ottieni
> risultati scorretti come '1011'
> Non devi neanche gestire le eccezioni, è chiaro che è molto implicito e che
> sa un po' di quick and dirty, ma
>  1) in alcuni casi non serve
>  2) e se serve allora hai sbagliato linguaggio :-(

Scusa ma con tutta la buona volontà non riesco a digerire una cosa di
questo tipo:

php > print '3viso'+2;
5

E' una cosa che è *oggettivamente* sbagliata, indipendentemente da
tutto, e non è giustificabile con "mi serve qualcosa di quick and
dirty".
Non è "quick", dato che se il comportamento del linguaggio è quello
sei obbligato a controllare l'input a priori (e quindi scrivi più
codice e perdi più tempo).
Davvero, questo:

php > print '3viso'+2;
5

...è da WTF mondiale!

> Non voglio assolutamente discutere se questo sia un approccio valido o meno,
> è stata la scelta dei progettisti di PHP che può piacere o non piacere.

Non è una questione di gusti. '3viso'+2 che ritorna 5 è oggettivamente
un aborto e non vedo una sola ragione che giustifichi una scelta
simile (di nuovo: non è "quick").

> Avrebbe senso gestire l'eccezione che il tuo script non riesce
> a fare un import? Quasi sempre no, ma a volte sì.

Cioè? Di default cosa fa PHP se non riesce a importare un modulo? Nulla?


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [OT]: PHP critique [ERA] Re: Python e html

2011-12-07 Thread Giampaolo Rodolà
Il 07 dicembre 2011 18:34, Marco Mariani  ha scritto:
> Dipende se lo importi con include() o require(). No comment.

Non capisco... lo use case di include() quale sarebbe?

--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [OT]: PHP critique [ERA] Re: Python e html

2011-12-08 Thread Giampaolo Rodolà
Il 08 dicembre 2011 12:55, Andrea Francia  ha scritto:
> Marco,
>  il thread mi ha stufato. Io credo che possano esistere opinioni diverse, e
> mi piace quando se ne riesce a discutere.
> Quando si parla di cose oggettivamente vere no ce la faccio. Quindi per me
> non è utile perdere tempo a leggere o spiegare meglio le mie risposte.

Scusami ma a fronte di:

php > print '3viso'+2;
5

...su cosa vuoi discutere?
E mica è finita:

php > print 'viso3'+2;
2

A quali esigenze andrebbe incontro una cosa del genere?
Non è una questione opinabile. Non ha senso. Punto e fine.
Figurati che quando l'ho visto ho pensato che non potesse essere
davvero così. Ho dovuto provarlo qui http://writecodeonline.com/php/


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Python e DAS/NAS/SAN

2011-12-12 Thread Giampaolo Rodolà
Il 12 dicembre 2011 12:45, Balan Victor  ha scritto:
> Ciao,
> ho un server su cui lancio dei script python, da questo server accedo anche
> a una NAS tramite percorso UNC. Esiste un modulo di python che mi permette
> di fare operazioni su questa NAS?? per esempio vedere lo spazio disco,
> contare il numero di file ecc.
> Grazie.

Non so quale sia il comportamento su volumi di rete, ma puoi provare
ad utilizzare questa recipe e vedere che succede:
http://code.activestate.com/recipes/577972-disk-usage/


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Python e DAS/NAS/SAN

2011-12-13 Thread Giampaolo Rodolà
Il 13 dicembre 2011 10:04, Balan Victor  ha scritto:
> ho provato ma c'è qualcosa che non mi torna. Faccio questo commando:
>
 disk_usage('C:')
> usage(total=2962784256L, used=-1328619520L, free=4291403776L)
>
> come gli interpreto i valori? sono byte?

Si (c'è scritto nella docstring).
Come extra, per avere risultati leggibili, puoi usare questo:


def bytes2human(n):
"""
>>> bytes2human(1)
'9.8K'
>>> bytes2human(11221)
'95.4M'
"""
symbols = ('K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
prefix = {}
for i, s in enumerate(symbols):
prefix[s] = 1 << (i+1)*10
for s in reversed(symbols):
if n >= prefix[s]:
value = float(n) / prefix[s]
return '%.1f%s' % (value, s)
 return "0B"


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Python e DAS/NAS/SAN

2011-12-13 Thread Giampaolo Rodolà
Il 13 dicembre 2011 18:11, Carlo Miron  ha scritto:
> Inoltre i simboli corretti dovrebbero essere ('KiB', 'MiB', 'GiB',
> 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB').

Personalmente non mi pare di ricordare di averli mai visti
rappresentati in quel modo.

> Infine, restituisce sempre "0B" per ogni valore di n < 1024.

Argh! Hai ragione. =)

--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Python e DAS/NAS/SAN

2011-12-13 Thread Giampaolo Rodolà
def bytes2human(n):
symbols = ('K', 'M', 'G', 'T')
prefix = {}
for i, s in enumerate(symbols):
prefix[s] = 1 << (i+1)*10
for s in reversed(symbols):
if n >= prefix[s]:
value = float(n) / prefix[s]
return '%.1f%s' % (value, s)
return "%iB" % n

Così dovrebbe essere a posto.


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Python e DAS/NAS/SAN

2011-12-13 Thread Giampaolo Rodolà
Il 13 dicembre 2011 19:19, Carlo Miron  ha scritto:
> IEC since 1998, IEEE standard since 2005.
> 
> 
> La cosa piu` carina sono i nomi: kibibyte, mebibyte, gibibyte... =D
> Ah, e ovviamente il numero dello standard IEEE, che mi ricorda il
> floppy del C64 :P

Ah! Mica lo sapevo...
In effetti ora che guardo transmission li rappresenta in quel modo.
"df -h" no però.

--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] PHP critique e somma con caratteri

2012-01-07 Thread Giampaolo Rodolà
Il 05 gennaio 2012 19:47, Alessandro Dentella  ha scritto:
>> Scusami ma a fronte di:
>>
>> php > print '3viso'+2;
>> 5
>
>
> riprendo questo thread solo perché sono appena incappato in questo pezzo di
> codice di awk:
>
>  $ echo -e "70.00ms\n130.00ms"|awk '{tot+=$NF} END {print tot/NR}'
>  100
>
> che suggerisce che quanto sopra riportato potrebbe essere scritto così:
>
>  $ echo 3visio 2|awk '{print $1 + $2}'
>  5
>
> Va da sè che nessuno ha mai pensato sdi scrivere un sito in awk...
>
>
> sandro
> *:-)
>
> PS: ci sono incappato in quanto l'ho scritto al volo per analizzare dei log,
>    nel momento in cui ho notato che dovevo strippare ms, mi sono accorto
>    che non serviva...

Gia che ci siamo, ne ho scoperta un'altra:

if ("0" == false) //true
if ("0" == NULL)  //true
if ("0" == "NULL") //true

Presumo che per risolvere questo problema ci siano le strict
comparison come in js ("===" per intenderci). O più che altro me lo
auguro...
Certo che sembra quasi che si siano messi a tavolino per trovare i
pitfall più stronzi.


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Impostare il valore di "nice"

2012-01-12 Thread Giampaolo Rodolà
Il 12 gennaio 2012 10:12, Walter Valenti  ha scritto:
> Ho provato a cercare al volo ma non trovato nulla di utile.
> C'è modo di impostare il valore di "nice" (ed eventualmente di "ionice") da 
> codice ?
> Mi riferisco a Linux come OS.
>
> Grazie.
>
> Walter

Puoi usare:

#1 - os.nice della stdlib

#2 - psutil (http://code.google.com/p/psutil/):
>>> import psutil, os
>>> p = psutil.Process(os.getpid())
>>> p.nice
0
>>> p.nice = 10  # set/change process priority
>>> p.nice
10
>>>

#3 - (esageriamo) os.set_priority / os.get_priority di python 3.3:
http://docs.python.org/dev/library/os.html#os.setpriority
http://bugs.python.org/issue10784

Le soluzioni #2 e #3 possono essere usate per tutti i processi (non
solo os.getpid()).

--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] ANN: pysendfile 2.0.0 released

2012-01-14 Thread Giampaolo Rodolà
Hi folks,
I'm pleased to announce the 2.0.0 release of pysendfile:
http://code.google.com/p/pysendfile

=== About ===

This is a python interface to sendfile(2) system call available on
most UNIX systems.
sendfile(2) provides a "zero-copy" way of copying data from one file
descriptor to another (a socket). The phrase "zero-copy" refers to the
fact that all of the copying of data between the two descriptors is
done entirely by the kernel, with no copying of data into userspace
buffers, resuting in file transfers being from 2x to 3x faster.
Basically, any application sending files over the network can take
advantage of it. HTTP and FTP servers are a typical example.

=== Supported platforms ===

* Linux
* Mac OSX
* FreeBSD
* Dragon Fly BSD
* Sun OS
* AIX (not properly tested)

=== Supported python versions ===

>From 2.5 to 3.3.

=== Links ===

* Home page: http://code.google.com/p/pysendfile
* Source tarball: http://pysendfile.googlecode.com/files/pysendfile-2.0.0.tar.gz



--- Giampaolo Rodola'
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
http://code.google.com/p/pysendfile/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Python e DAS/NAS/SAN

2012-01-18 Thread Giampaolo Rodolà
Il 13 dicembre 2011 19:34, Giampaolo Rodolà  ha scritto:
> Il 13 dicembre 2011 19:19, Carlo Miron  ha scritto:
>> IEC since 1998, IEEE standard since 2005.
>> <http://it.wikipedia.org/wiki/Prefissi_per_multipli_binari>
>> <http://it.wikipedia.org/wiki/IEEE_1541>
>> La cosa piu` carina sono i nomi: kibibyte, mebibyte, gibibyte... =D
>> Ah, e ovviamente il numero dello standard IEEE, che mi ricorda il
>> floppy del C64 :P
>
> Ah! Mica lo sapevo...
> In effetti ora che guardo transmission li rappresenta in quel modo.
> "df -h" no però.
>
> --- Giampaolo
> http://code.google.com/p/pyftpdlib/
> http://code.google.com/p/psutil/

Gia che ci siamo, riesumo:
http://code.activestate.com/recipes/578019-bytes-to-human-human-to-bytes-converter/

--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
http://code.google.com/p/pysendfile/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] ANN: pyftpdlib 0.7.0 released

2012-01-25 Thread Giampaolo Rodolà
Hi,
I'm pleased to announce release 0.7.0 of Python FTP Server library (pyftpdlib).
http://code.google.com/p/pyftpdlib/

=== About ===

Python FTP server library provides an high-level portable interface to
easily write asynchronous FTP/S servers with Python. pyftpdlib is
currently the most complete RFC-959 FTP server implementation
available for Python programming language.

=== sendfile() ===

sendfile(2) system call usage has finally been introduced. sendfile(2)
provides a "zero-copy" way of copying data from one file descriptor to
another (a socket). The phrase "zero-copy" refers to the fact that all
of the copying of data between the two descriptors is done entirely by
the kernel, with no copying of data into userspace buffers, resuting
in file transfers (RETR, hence from server to client) being from 2x to
3x faster.

A simple benchmark:

pyftpdlib 0.6.0:693.41 MB/sec
pyftpdlib 0.7.0:   1694.14 MB/sec
proftpd 1.3.4rc2:  1313.77 MB/sec
vsftpd 2.3.2:  1505.18 MB/sec

In order to use sendfile(2) you'll have to install pysendfile module
first (UNIX only):
http://code.google.com/p/pysendfile/

=== Faster scheduler ===

The internal scheduler, governed by CallLater and CallEvery classes,
has been rewritten from scratch and it is an order of magnitue faster,
especially for operations like cancel() which are involved when
clients are disconnected (hence invoked very often). Some benchmarks:

schedule: +0.5x
reschedule: +1.7x
cancel: +477x (with 1 milion scheduled functions)
run: +8x

Also, a single scheduled function now consumes 1/3 of the memory
thanks to __slots__ usage.
For further details see: http://code.google.com/p/pyftpdlib/issues/detail?id=189

=== SITE CHMOD ===

This new version supports SITE CHMOD command, meaning the client is
now able to change file mode bits by issuing "SITE CHMOD path mode"
command. The authorizer now accepts a new "M" permission bit, which,
when specified, enables SITE CHMOD usage:

>>> authorizer = DummyAuthorizer()
>>> authorizer.add_user('user', 'password', '/home/user', perm='elradfmwM')

=== Other improvements ===

* on_failed_login() callback: this is called when user provides wrong
credentials.
* CallEvery class: same as CallLater, but keeps calling a function
every X seconds.
* A benchmark script:
http://code.google.com/p/pyftpdlib/source/browse/trunk/test/bench.py
* Anti flood demo script:
http://pyftpdlib.googlecode.com/svn/trunk/demo/anti_flood_ftpd.py

A complete list of changes including enhancements and bug fixes is
available here:
http://code.google.com/p/pyftpdlib/wiki/ReleaseNotes07

=== More links ===

* Source tarball: http://pyftpdlib.googlecode.com/files/pyftpdlib-0.7.0.tar.gz
* Online docs: http://code.google.com/p/pyftpdlib/wiki/Tutorial
* FAQs: http://code.google.com/p/pyftpdlib/wiki/FAQ
* RFCs compliance paper: http://code.google.com/p/pyftpdlib/wiki/RFCsCompliance
* Issue tracker: http://code.google.com/p/pyftpdlib/issues/list

If you think pyftpdlib is worth a donation you can do so by going here:
http://code.google.com/p/pyftpdlib/wiki/Donate

Thanks,

--- Giampaolo Rodola'
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
http://code.google.com/p/pysendfile/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Emulare il comando ping...

2012-03-13 Thread Giampaolo Rodolà
Il 13 marzo 2012 08:49, Giorgio Zoppi  ha scritto:
> raw sockets + icmp
> scapy penso faccia al tuo caso.

Purtroppo questo richiede privilegi di root.
Ci ho sbattuto la testa un buon paio d'ore sul problema e sono giunto
alla conclusione che l'unica soluzione è parsare l'output di 'ping' e
tanti saluti.
Se può tornare utile all'OP, eccolo qui (funzia solo su UNIX):


from subprocess import call, PIPE

def ping(host, timeout=10):
"""Return True if host is up."""
# -q = quiet output
# -c = count
# -w = total timeout
# -W = timeout for a single ICMP REPLY
# -n = no DNS resolution for the output
timeout = str(timeout)
assert timeout.isdigit(), timeout
retcode = call(["ping", "-q", "-c", "1", "-w", timeout, "-W", "1",
"-n", host],
   stdout=PIPE)
return True if retcode == 0 else False
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Emulare il comando ping...

2012-03-14 Thread Giampaolo Rodolà
Il 14 marzo 2012 12:14, Val  ha scritto:
>
>
> Premessa: sono uno sviluppatore professionista da 20 anni in vari linguaggi, 
> ma Pythonista amatoriale (ed entusiasta) da 1, vi leggo solo, senza mai 
> scrivere.
> Per risolvere un problema simile ho goggleato vari tipi di soluzioni 
> possibili e ne ho trovata una che ha il difetto delle basse performance, ma è 
> sicuramente alternativa:
> Nella variabile IP_curr c'è ovviamente l'IP da pingare.
>
>
> import socket
>
>
>     try:
>     host = socket.gethostbyaddr(IP_curr)[0]
>     except socket.herror:
>     host = 0
>
>
>    if host == 0:
>     msg = msg + "OFFLINE"
>     else:
>     msg = msg + str(host)
>
>     print msg

Non mi pare molto affidabile. Col mio provider ad esempio non funziona:


>>> socket.gethostbyaddr('adksndkasndk.com')  # dominio non registrato
('ar.libero.it', [], ['212.52.82.27'])
>>>


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
http://code.google.com/p/pysendfile/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Virtualenv vs. buildout

2012-03-25 Thread Giampaolo Rodolà
Il 23 marzo 2012 11:27, Alessandro Dentella  ha scritto:
> Ciao,
>
> ho appena cominciato a lavorare per un progetto django che ha molti siti web
> ed una miriade di piccole applicazioni. Al momento non usa alcuno strumento
> per il deploy, applicazioni anche semplici richiedono molta pazienza per
> essere messe in produzione.
>
> Sto guardando quali strumenti siamo i migliori, per intenderci qui non si
> sta usando neanche pip install -r...
>
> In passato ho usato normalmente virtualenv ma vorrei analizzare anche
> buildout. Ho letto un po' di documentazione del sito e di Jacob Kaplan-Moss
> e visto qualche video. Mi piacerebbe avere anche qualche parere da chi li
> usa entrambi prima di sposare una delle due soluzioni.
>
>
> sandro
> *:-)

Su buildout ci ho passato 2 anni: mai piaciuto.
E', di fatto, "una cosa che devi imparare", estremamente dichiarativo,
e con cui ti ci vai a puntualmente a scornare ogni volta che lo
tocchi: quando qualcosa non funziona i suoi messaggi di errore sono
utili quanto un 2 di bastoni con la briscola a coppe. A parer mio è
pessimo.

Da un anno ormai sono approdato a virtualenv + pip.
Una volta capito come far interagire i due è facile buttare giu uno
script di bootstrap che lanci e si occupa di creare il virtualenv e
gestire le dipendenze e che poi vai a riusare di progetto in progetto,
applicando piccole modifiche (essenzialmente: le dipendenze e il nome
del progetto).
Per tutte le cose "extra" (esempio: aggiungere uno script di init)
semplicemente te le scrivi a mano in python come parte del bootstrap
stesso.

--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
http://code.google.com/p/pysendfile/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Virtualenv vs. buildout

2012-03-25 Thread Giampaolo Rodolà
Il 23 marzo 2012 12:18, Riccardo Lemmi  ha scritto:
> Non ho esperienza nell'uso di virtualenv come sistema di deployment ma quello
> che posso dire, sulla base dalla mia esperienza su entrambi, è che non mi pare
> che virtualenv possa essere usato in questo modo.
>
> zc.buildout mette a disposizione strumenti per fare un deployment replicabile 
> e
> versionabile che virtualenv non ha (almeno di default). Probabimente l'unica
> similarità tra i due è la creazione di un ambiente isolato.

Infatti virtualenv non ha lo scopo di "replicare e versionare". Per
quello usi pip.
Basta dargli in pasto un file di testo in cui sono dichiarate tutte le
dipendenze, che è possibile tirare giu anche da
SVN/GIT/MERCURIAL/[...] ad una *specifica revisione*.
Virtualenv crea l'ambiente separato e pip si occupa delle
dipendenze/versionamento. Fine della storia.
Alla luce di questo semplice fatto, e a meno che non si abbiano
esigenze davvero particolari, personalmente non vedo un motivo valido
per preferire buildout.


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
http://code.google.com/p/pysendfile/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] MAC e python

2012-05-30 Thread Giampaolo Rodolà
Il 23 maggio 2012 16:16, Daniele Varrazzo  ha scritto:
> On Wed, 23 May 2012 15:52:55 +0200, Fabrizio Mancini wrote:
>
>> p.s. spesso da anche problemi con la compilazione delle librerie
>> client
>
>
> La mia esperienza come maintainer di psycopg lo conferma: gli utenti OSX che
> non riescono a compilare il modulo sono il più grande dito al cu*o che
> esista. A confronto debuggare bug sul multithreading è piacevole come
> passeggiata in un prato. Ogni release di un gatto nuovo rompe il build in
> nuovi ed entusiasmanti modi.

Idem per psutil. La quantità di bug relativi a OSX sono la maggioranza:
http://code.google.com/p/psutil/issues/list?can=1&q=label%3AOpSys-OSX&colspec=ID+Summary+Type+Opsys+Status+Milestone+Opened+Owner+Progress&cells=tiles
Quello più segnalato è il fatto che per interrogare qualunque processo
che non sia il proprio (os.getpid()) da OSX 10.5 in avanti devi essere
root (l'unico UNIX a farlo).
Uniche fix: suid sull'interprete python o buttare OSX nel cesso.


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
http://code.google.com/p/pysendfile/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] MAC e python

2012-06-01 Thread Giampaolo Rodolà
Il 31 maggio 2012 19:00, enrico franchi  ha scritto:
> 2012/5/31 Giampaolo Rodolà :
>
>> Idem per psutil. La quantità di bug relativi a OSX sono la maggioranza:
>> http://code.google.com/p/psutil/issues/list?can=1&q=label%3AOpSys-OSX&colspec=ID+Summary+Type+Opsys+Status+Milestone+Opened+Owner+Progress&cells=tiles
>> Quello più segnalato è il fatto che per interrogare qualunque processo
>> che non sia il proprio (os.getpid()) da OSX 10.5 in avanti devi essere
>> root (l'unico UNIX a farlo).
>> Uniche fix: suid sull'interprete python o buttare OSX nel cesso.
>
> Mi fai un esempio concreto di una cosa che non dovrei essere riuscito a fare?
>
>>>> processes = psutil.get_process_list()
>>>> root_processes = [p for p in processes if p.username != 'enrico']
>>>> p = root_processes[-1]
>>>> p.get_children()
> [,  name='kernel_task') at 4313276304>]
>
>
> ls -l `which python`
> -rwxrwxr-x  1 enrico  staff  8784 May 31 19:02
> /Users/enrico/src/psutil-test/bin/python
>
> Sotto viene chiamato questo:
> ls -l /Library/Frameworks/EPD64.framework/Versions/7.2/bin/python
> -rwxrwxr-x  2 root  wheel  8784 Jan 13 18:14
> /Library/Frameworks/EPD64.framework/Versions/7.2/bin/python

In questo momento non ho un OSX sotto mano ma in genere quello che
riesci a ottenere è nome del processo, parent pid (che è usato da
get_children() nel tuo esempio) e poche altre informazioni.
Altre info relative alla memoria (get_memory_info()), cmdline, e
persino i tempi di CPU (per calcolare l'utilizzo percentuale)
dovrebbero richiedere root.
http://code.google.com/p/psutil/issues/detail?id=215
http://code.google.com/p/psutil/issues/detail?id=108
http://code.google.com/p/psutil/issues/detail?id=106

Non a caso "ps" su OSX gira con suid.
Qui viene descritto il problema:
http://psutil.googlecode.com/issues/attachment?aid=7360485559905024215&name=task_for_pid_signing.pdf&token=qa3FQnumrJFP702cgO5nhq-_JfE%3A1338545731342

--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
http://code.google.com/p/pysendfile/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] MAC e python

2012-06-04 Thread Giampaolo Rodolà
Il 04 giugno 2012 16:09, enrico franchi  ha scritto:
> 2012/6/1 Giampaolo Rodolà :
>
>> In questo momento non ho un OSX sotto mano ma in genere quello che
>> riesci a ottenere è nome del processo, parent pid (che è usato da
>> get_children() nel tuo esempio) e poche altre informazioni.
>> Altre info relative alla memoria (get_memory_info()), cmdline, e
>> persino i tempi di CPU (per calcolare l'utilizzo percentuale)
>> dovrebbero richiedere root.
>> http://code.google.com/p/psutil/issues/detail?id=215
>> http://code.google.com/p/psutil/issues/detail?id=108
>> http://code.google.com/p/psutil/issues/detail?id=106
>
> Ok. Chiaro. Effettivamente questi non funzionano.
>
> Temo che l'unica sia usare il framework di sicurezza di OS X.
> Una volta ti avrei detto con sicurezza
> "AuthorizationExecuteWithPrivileges", ma oggi pare essere deprecata su
> Lion.
>
> Ho idea di come farlo funzionare... ma potrebbe non piacerti. Se vuoi
> ci diamo un occhio ad europython.
> Probabilmente per partire non ci vuole molto.

Non credo di esserci quest'anno.
Ti pingo in privato così non ammorbiamo questa discussione. =)

--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
http://code.google.com/p/pysendfile/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Verifica di aggiornamento File

2012-06-20 Thread Giampaolo Rodolà
Il 20 giugno 2012 11:49, Lorenzo Macchiavelli
 ha scritto:
> Buongiorno a tutti,
>
> Ho realizzato uno script che partendo da un singolo file di template, ovvero
> un file html
> con markup definito da me; distribuisce parti di codice in vari file
> all'inerno di un cms.
>
> ma questo avviene solo alla pressione del tasto invio nella shell
> interattiva..
> che durante la lavorazione di un progetto si moltiplica per centinaia di
> volte.
>
> la mia domanda è la seguente : è possibile che questo avvenga in automatico
> ad esempio
> ogni volta che salvo il template? come posso fare un listener
> sull'aggiornamento del file?
>
> Grazie in anticipo :)

Oltre al gia menzionato pyinotify, potrebbe interessarti questa mia recipe:
http://code.activestate.com/recipes/577968-log-watcher-tail-f-log/?in=user-4178764

--- Giampaolo
https://code.google.com/p/pyftpdlib/
https://code.google.com/p/psutil/
https://code.google.com/p/pysendfile/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [OT] Verifica di aggiornamento File

2012-06-21 Thread Giampaolo Rodolà
2012/6/21 Valerio De Carolis :
> Il 20/06/2012 20:08, Giampaolo Rodolà ha scritto:
>> Oltre al gia menzionato pyinotify, potrebbe interessarti questa mia recipe:
>> http://code.activestate.com/recipes/577968-log-watcher-tail-f-log/?in=user-4178764
>>
>> --- Giampaolo
>> https://code.google.com/p/pyftpdlib/
>> https://code.google.com/p/psutil/
>> https://code.google.com/p/pysendfile/
>
> A proposito di "recipe" ho letto che "sendfile" è stata inclusa nella
> nuova release 3.3!

Si:
http://bugs.python.org/issue10882
http://docs.python.org/dev/library/os.html#os.sendfile
Peccato non averla avuta finora e anche il fatto che sia poco
conosciuta perchè lo speedup è notevole.

> Il codice che sfrutta la libreria sarà compatibile con la nuova standard
> library sfruttando os?

E' leggermente diverso se usi gli argomenti headers e trailers.
In py 3.3 sono una lista, in pysendfile una stringa.
Dubito cmq che l'utenza usi headers e trailers a priori per tre motivi:

- su OSX (non ricordo quale versione) la loro implementazione è rotta
- non ci sono su tutti i POSIX (es Linux)
- è molto più semplice usare socket.send/all() al loro posto


--- Giampaolo
https://code.google.com/p/pyftpdlib/
https://code.google.com/p/psutil/
https://code.google.com/p/pysendfile/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] ANN: psutil 0.5.0 released

2012-06-27 Thread Giampaolo Rodolà
Hi folks,
I'm pleased to announce the 0.5.0 release of psutil:
http://code.google.com/p/psutil/

=== Major new features ===

- system users
- (Linux, Windows) process CPU affinity (get and set)
- (POSIX) process number of opened file descriptors.
- (Windows) process number of opened handles.
- psutil.disk_partitions() now provides also mount options
- new Process.as_dict() method.
- Process.get_children(recursive=True): return all process descendants.
- 2to3 is not longer required to run at installation time in order to
support Python 3
- ppid, name, exe, cmdline and create_time properties of Process class
are now cached after being accessed.
- psutil.process_iter() now caches Process instances between calls.

For a complete list of features and bug fixes see:
http://psutil.googlecode.com/svn/trunk/HISTORY


=== New features by example ===

>>> import psutil, os
>>>
>>> psutil.get_users()
[user(name='giampaolo', terminal='pts/2', host='localhost',
started=1340737536.0),
 user(name='giampaolo', terminal='pts/3', host='localhost',
started=1340737792.0)]
>>>
>>> psutil.disk_partitions()
[partition(device='/dev/sda1', mountpoint='/', fstype='ext4', opts='rw,nosuid'),
 partition(device='/dev/sda2', mountpoint='/home', fstype='ext, opts='rw')]
>>>
>>> p = psutil.Process(os.getpid())
>>> p.get_num_fds()
4
>>>
>>> p.get_num_handles()  # windows only
254
>>>
>>> p.get_memory_maps()
[mmap(path='/lib/x86_64-linux-gnu/libutil-2.15.so', rss=16384,
anonymous=8192, swap=0),
 mmap(path='/lib/x86_64-linux-gnu/libc-2.15.so', rss=6384,
anonymous=15, swap=0),
 mmap(path='/lib/x86_64-linux-gnu/libcrypto.so.1.0.0', rss=34124,
anonymous=1245, swap=0),
 mmap(path='[heap]', rss=54653, anonymous=8192, swap=0),
 mmap(path='[stack]', rss=1542, anonymous=166, swap=0),
 ...]
>>>
>>> p.as_dict()
{'status': 0, 'pid': 29510, 'connections': [], 'cmdline': ['python'], ...}
>>>
>>> p.get_cpu_affinity()
[0, 1, 2, 3]
>>> p.set_cpu_affinity([0])
>>>
>>> p.get_children(recursive=True)
[, , ...]
>>>


=== Links ===

* Home page: http://code.google.com/p/psutil
* Source tarball: http://psutil.googlecode.com/files/psutil-0.5.0.tar.gz
* Api Reference: http://code.google.com/p/psutil/wiki/Documentation


Please try out this new release and let me know if you experience any
problem by filing issues on the bug tracker.
Thanks in advance.


--- Giampaolo Rodola'

http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
http://code.google.com/p/pysendfile/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] richiesta di informazioni.

2012-07-13 Thread Giampaolo Rodolà
Il 27 giugno 2012 19:09, Vittorio Spina  ha scritto:
> io per esperienza personale rimarrei alla 2.6

Se vuoi rimanere su 2.x la scelta ricade inevitabilmente su 2.7, non 2.6.
2.7 è retrocompatibilie con 2.6, più aggiornata, più vicina a 3.x in
termini di facilità di porting e sopratutto è e sarà fixata/aggiornata
per molti anni a venire (mentre dentro 2.6 ci finiscono solo fix
relative alla sicurezza).

Tutt'oggi a "cosa scelgo tra 2.x e 3.x" rispondo ancora 2.x, ma la
situazione potrebbe cambiare con la 3.3.
Da che ho memoria (python 2.1 o giu di li), mai ci fu release più
succosa su carta:
http://docs.python.org/dev/whatsnew/3.3.html

La speranza è che i "grandi nomi" (twisted, django, GUI libs etc)
colgano l'occasione per fare finalmente il porting, anche perchè il
ritardo è davvero imbarazzante.
Da lì in poi l'incremento di utenza dovrebbe essere abbastanza
esponenziale, IMO.


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
http://code.google.com/p/pysendfle/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] ANN: psutil 0.6.0 released

2012-08-13 Thread Giampaolo Rodolà
Hi folks,
I'm pleased to announce the 0.6.0 release of psutil:
http://code.google.com/p/psutil/

This is one of the best releases so far as it addresses two important
issues: system memory functions management and permission errors
occurring on Windows and OSX.


=== Memory functions ===

psutil.phymem_usage() and psutil.virtmem_usage() are deprecated.
Instead we now have psutil.virtual_memory() and psutil.swap_memory(),
which should provide all the necessary pieces to monitor the actual
system memory usage, both physical and swap/disk related.

The refactoring was modeled after Zabbix, see:
http://code.google.com/p/psutil/issues/detail?id=311
http://blog.zabbix.com/when-alexei-isnt-looking/#vm.memory.size
http://www.zabbix.com/documentation/2.0/manual/appendix/items/vm.memory.size_params

If you don't want to read how and why I did that, the bottom line is:
if you want to monitor actual system memory usage in a cross platform
fashion use:

>>> psutil.virtual_memory().available


=== No more AccessDenied exceptions when querying processes ===

On Windows and OSX the Process methods below were always raising AccessDenied
for any process owned by another user:

OSX
- name
- get_memory_info()
- get_memory_percent()
- get_cpu_times()
- get_cpu_percent()
- get_num_threads()

WINDOWS
- create_time
- get_children()
- get_cpu_times()
- get_cpu_percent()
- get_memory_info()
- get_memory_percent()
- get_num_handles()
- get_io_counters()

Especially on OSX this made psutil basically unusable as a limited
user, even for determining basic process information such as CPU
percent or memory usage.
Now this is no longer the case.
For further details see:
http://code.google.com/p/psutil/issues/detail?id=297
http://code.google.com/p/psutil/issues/detail?id=303


=== Other major enhancements ===

- per-process extended memory stats.
- per-process number of voluntary and involuntary context switches.
- per-process connections: added UNIX sockets support.
- (BSD) Process.get_connections() rewritten in C and no longer requiring lsof.
- (OSX) added support for process cwd
- psutil.network_io_counters() now provides the number of in/out
packets dropped and with errors.
- new example scripts:
example/meminfo.py
example/free.py
example/netstat.py
example/pmap.py


=== New features by example ===

>>> import psutil, os
>>> p = psutil.Process(os.getpid())
>>>
>>> p.get_num_ctx_switches()
amount(voluntary=78, involuntary=19)
>>>
>>> p.get_ext_memory_info()
meminfo(rss=9662464, vms=49192960, shared=3612672, text=2564096,
lib=0, data=5754880, dirty=0)
>>>
>>> p.get_connections(kind='unix')
[connection(fd=8, family=1, type=1,
local_address='/tmp/unix_socket.sock', remote_address=None,
status='')]
>>>
>>>
>>> psutil.virtual_memory()
vmem(total=8374149120L, available=2081050624L, percent=75.1,
used=8074080256L, free=300068864L, active=3294920704,
inactive=1361616896, buffers=529895424L, cached=1251086336)
>>>
>>> psutil.swap_memory()
swap(total=2097147904L, used=296128512L, free=1801019392L,
percent=14.1, sin=304193536, sout=677842944)
>>>

=== Compatitility notes ===

0.6.0 version does not introduce any backward incompatibility.
Nevertheless it introduces some deprecations warnings:

- psutil.phymem_usage() is deprecated in favor of psutil.virtual_memory()
- psutil.virmem_usage() is deprecated in favor of psutil.swap_memory()
- psutil.cached_phymem() is deprecated in favor of
psutil.virtual_memory().cached
- psutil.phymem_buffers() is deprecated in favor of
psutil.virtual_memory().buffers

The deprecated functions will be removed in next 1.0.0 version.


=== Links ===

* Home page: http://code.google.com/p/psutil
* Source tarball: http://psutil.googlecode.com/files/psutil-0.6.0.tar.gz
* Api Reference: http://code.google.com/p/psutil/wiki/Documentation


Please try out this new release and let me know if you experience any
problem by filing issues on the bug tracker.
Thanks in advance.


--- Giampaolo Rodola'

http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
http://code.google.com/p/pysendfile/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] os.path normalizzare path + file

2012-08-30 Thread Giampaolo Rodolà
[snip]
> oppure usando pkg_resources

Questo mi interessa. Che intendi?


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
http://code.google.com/p/pysendfile/

Il 29 agosto 2012 16:37, Manlio Perillo  ha scritto:
> -BEGIN PGP SIGNED MESSAGE-
> Hash: SHA1
>
> Il 29/08/2012 16:20, Carlo Miron ha scritto:
>> 2012/8/29 Manlio Perillo :
>>> Il 29/08/2012 07:59, marco...@libero.it ha scritto:
 Qual'è il comando esatto per fare questa cosa?
>>>
>>> Inserire il path in un file di configurazione.
>>
>> E come indichi al programma la posizione del file di configurazione? :D
>>
>
> Il file di configurazione lo metti in un path all'interno a dove è
> installata l'applicazione (giocando quindi con __path__ oppure usando
> pkg_resources), oppure nella home dir dell'utente:
>
 os.path.expanduser('~/config.cfg')
> '/home/manlio/config.cfg'
>
>
> Ciao  Manlio
>
> -BEGIN PGP SIGNATURE-
> Version: GnuPG v1.4.10 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>
> iEYEARECAAYFAlA+KT0ACgkQscQJ24LbaUSc3ACgloG2ylx8/xBiOJbJrrmYi8US
> XVwAoJle89g9v3q+4zRGytCldm2rJ088
> =iUFw
> -END PGP SIGNATURE-
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Tracciare chiamate

2012-09-20 Thread Giampaolo Rodolà
Il giorno 18 settembre 2012 03:41, Walter Valenti
ha scritto:

>
>
> >
> > 2012/9/18 Giacomo Alzetta :
> >>  On Tuesday 18 September 2012 10:57:41 Walter Valenti wrote:
> >>>  C'è un modo pulito e veloce per tracciare le chiamate ai metodi di
> > una
> >>>  classe, a parte delle print ?
> >
> > Questo sicuramente.
> >
> > O magari intende "tracciare" nel senso dei vari trace del prolog o dei
> > linguaggi funzionali?
> >
>
> Intendo proprio loggare le chiamate Classe.metodo.
>
> Mi guarderò i logging.
>
> Walter
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>


Se intendi vedere quali linee vengono eseguite, linea per linea, puoi usare
qualcosa di questo tipo:


# copyright Giampaolo Rodola', license MIT
import sys, linecache

def tracethis(callback=None):
"""A decorator to trace a callable.

>>> @tracethis()
... def foo():
... ret = []
... ret.append(range(10))
... return ret
...
>>> foo()
__main__:5: ret = []
__main__:6: ret.append(range(10))
__main__:7: return ret
>>>

Example for logging traces of a certain module only:

>>> def callback(name, lineno, line):
... if name == __name__:
... print "%s:%s: %s" % (name, lineno, line)
...
>>>
>>> @tracethis(callback)
... def foo():
... pass
...
>>>
"""
def run(frame, event, arg):
if event == "line":
lineno = frame.f_lineno
filename = frame.f_globals["__file__"]
if (filename.endswith(".pyc") or
filename.endswith(".pyo")):
filename = filename[:-1]
name = frame.f_globals["__name__"]
line = linecache.getline(filename, lineno).rstrip()
if callback is None:
print "%s:%s: %s" % (name, lineno, line)
else:
callback(name, lineno, line)
return run

def outer(fun):
def inner(*args, **kwargs):
sys.settrace(run)
try:
return fun(*args, **kwargs)
finally:
sys.settrace(None)
return inner

return outer


# test
if __name__ == '__main__':
@tracethis()
def foo():
ret = []
ret.append(range(10))
return ret

foo()


--- Giampaolo
http://code.google.com/p/pyftpdlib/ 
http://code.google.com/p/psutil/
http://code.google.com/p/pysendfile/ 
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] lista processi attivi windows jython

2012-09-28 Thread Giampaolo Rodolà
In Java hai anche sigar, un progetto molto simile a psutil:
http://support.hyperic.com/display/SIGAR/Home
La cosa interessante e' che ha inclusi i binding per Python, quindi puoi
usarlo sia in Python che in Java che in Jython!

--- Giampaolo
http://code.google.com/p/pyftpdlib/ 
http://code.google.com/p/psutil/
http://code.google.com/p/pysendfile/ 


Il giorno 28 settembre 2012 11:02, Enrico Franchi
ha scritto:

>
> On Sep 25, 2012, at 2:55 PM, Balan Victor wrote:
>
> > in realtà non uso jython ... ma sikuli ...e se non ho capito male
> sikuli usa python al suo interno ma non so come installare moduli
> aggiuntivi .. penso che non si possa fare ma non ne sono sicuro.
>
> La domanda e' quale piattaforma? Posto che psutil può' essere proprio
> quello che ti serve, magari affrontare la cosa da Java e' più' facile.
> Jython chiama 1-1 qualunque libreria hai in Java.  Se SIKULI (come
> sembra) e' Java, basta che gli aggiungi nel classpath le librerie rilevanti.
>
>
> http://stackoverflow.com/questions/54686/how-to-get-a-list-of-current-open-windows-process-with-java
>
> http://yajsw.sourceforge.net/
>
> https://github.com/twall/jna
>
>
> -enrico
>
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] python 3 - domande vaie

2013-01-03 Thread Giampaolo Rodolà
Il giorno 02 gennaio 2013 11:01, Valerio Pachera  ha scritto:
>
> Grazie per le risposte precedenti.
> Ho notato una cosa, valida anche per python 2 che prima non sapevo:
> si può scrivere in costrutto if senza passare 'or' o 'and'
>   if x !=2 !=5 == 4:
> print ('vero)

Acc! Anni che uso Python ma questa proprio non la sapevo.


--- Giampaolo

http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
http://code.google.com/p/pysendfile/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] ANN: psutil 0.7.0 released

2013-04-12 Thread Giampaolo Rodolà
Hi there folks,
I'm pleased to announce the 0.7.0 release of psutil:
http://code.google.com/p/psutil/

This is mainly a bugfix release addressing a couple of high priority
issues on Linux and FreeBSD.
Complete list of bugfixes and enhancements is here:
https://psutil.googlecode.com/hg/HISTORY

=== New features ===

- psutil.get_boot_time()
- get/set process IO priority support also for Windows
- psutil.cpu_times() on Linux now includes new 'steal', 'guest' and
guest_nice' fields available on recent kernels
- psutil.cpu_times_percent(), which provides utilization percentages
for each specific CPU time as shown by top (user, system, idle, etc.)
- source code has been migrated from SVN to Mercurial (finally!)

=== Compatitility notes ===

- Process cmdline and ppid properties are no longer cached after first access
- psutil.error module is deprecated and scheduled for removal

=== Links ===

* Home page: http://code.google.com/p/psutil
* Source tarball: http://psutil.googlecode.com/files/psutil-0.7.0.tar.gz
* Api Reference: http://code.google.com/p/psutil/wiki/Documentation


Please try out this new release and let me know if you experience any
problem by filing issues on the bug tracker.
Thanks in advance.


--- Giampaolo Rodola'

http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/
http://code.google.com/p/pysendfile/
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python