Re: [Python] socket - questa me la dovete proprio spiegare..

2007-07-29 Per discussione allanon
Thu 26 July 2007, alle 23:35 +0200, allanon ha scritto:
 Eccomi qua, con un altro quesito!
 
 siccome sono niubbo il codice lo provo prima nell'interprete ide
 (quello che si lancia scrivendo python da console :p)
 
 e allora scrivo questo codice qui
 
 #!/usr/bin/python
 import sys
 from socket import *
 import re
 Host = 'localhost'
 Port = 5038
 s = socket(AF_INET, SOCK_STREAM)
 s.connect((Host, Port))
 s.send('Action: Login\r\nUserName: fop\r\nSecret: didodidodee\r\n\r\n')
 s.send('Action: Command\r\nCommand: Show Channels\r\n\r\n')
 data = s.recv(2048) # riceve fino a  2K bytes
 rawstr = r\d(?=.active channels)
 d=re.findall(rawstr,str(data))
 print canali attivi +str(d)
 
 e funziona senza dire pio!
 mi ritorna
 
 canali attivi 0
 
 la variabile data e' la seguente
  print data
 Asterisk Call Manager/1.0
 Response: Success
 Message: Authentication accepted
 
 Response: Follows
 Privilege: Command
 Channel  Location State   Application(Data)   
   
 0 active channels
  
 
 
 
 
 Quanto invece lo stesso identico e medesimo codice frutto del copia e
 incolla piu' puro lo ficco dentro un file e lo eseguo..
 # ./prova-asterisk.py 
 canali attivi []
 
 e la variabile data
 contiene soltanto
 
 Asterisk Call Manager/1.0
 
 
 
 secondo voi, come e' possibile che lo stesso codice ha un comportamento
 differente??
 
 PS
 sono arcisicuro che mi manca qualche dettaglio essensiale,
 daltra parte non potrebbe essere altrimenti,
 pero stavolta sono propro curioso di sapere cosa e' 
 


ghghghg, grazie ad un coder php abbiamo risolto!!
(lui dice che nel reference del php c'e' scritto!!!)
posto la soluzione per i posteri!

bisogna inserire un timer tra il send e il recv !!!

un qualcosa tipo 
s=socket..
s.send...
time.sleep(0.1)
s.recv..


Ciauz



-- 
  .''`.  |Utente Linux #370990 -- jabber: [EMAIL PROTECTED]
 : :'  : |No al TC-Palladium! http://www.no1984.org/
 `. `'`  |GnuPG ID Key:(0x)A07FF2DB --  gpg --search-keys 0xA07FF2DB
   `-|Fingerprint 3D2F DCD4 6AB3 9C52 995A  969E D634 02FF A07F F2DB
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] socket - questa me la dovete proprio spiegare..

2007-07-26 Per discussione allanon
Eccomi qua, con un altro quesito!

siccome sono niubbo il codice lo provo prima nell'interprete ide
(quello che si lancia scrivendo python da console :p)

e allora scrivo questo codice qui

#!/usr/bin/python
import sys
from socket import *
import re
Host = 'localhost'
Port = 5038
s = socket(AF_INET, SOCK_STREAM)
s.connect((Host, Port))
s.send('Action: Login\r\nUserName: fop\r\nSecret: didodidodee\r\n\r\n')
s.send('Action: Command\r\nCommand: Show Channels\r\n\r\n')
data = s.recv(2048) # riceve fino a  2K bytes
rawstr = r\d(?=.active channels)
d=re.findall(rawstr,str(data))
print canali attivi +str(d)

e funziona senza dire pio!
mi ritorna

canali attivi 0

la variabile data e' la seguente
 print data
Asterisk Call Manager/1.0
Response: Success
Message: Authentication accepted

Response: Follows
Privilege: Command
Channel  Location State   Application(Data) 
0 active channels
 




Quanto invece lo stesso identico e medesimo codice frutto del copia e
incolla piu' puro lo ficco dentro un file e lo eseguo..
# ./prova-asterisk.py 
canali attivi []

e la variabile data
contiene soltanto

Asterisk Call Manager/1.0



secondo voi, come e' possibile che lo stesso codice ha un comportamento
differente??

PS
sono arcisicuro che mi manca qualche dettaglio essensiale,
daltra parte non potrebbe essere altrimenti,
pero stavolta sono propro curioso di sapere cosa e' 

Ciauzz



-- 
  .''`.  |Utente Linux #370990 -- jabber: [EMAIL PROTECTED]
 : :'  : |No al TC-Palladium! http://www.no1984.org/
 `. `'`  |GnuPG ID Key:(0x)A07FF2DB --  gpg --search-keys 0xA07FF2DB
   `-|Fingerprint 3D2F DCD4 6AB3 9C52 995A  969E D634 02FF A07F F2DB
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] come ripeto una funzione dopo un certo intervallo di tempo?

2007-07-16 Per discussione allanon
Mon 16 July 2007, alle 11:28 +0200, Manlio Perillo ha scritto:
 allanon ha scritto:
 Sun 15 July 2007, alle 16:47 +0200, Eriol ha scritto:
 On Friday 13 July 2007, allanon wrote:
 come potrei fare?
 Importare dal modulo threading:
 
 from threading import Timer
 
 
 ti ringrazio per la dritta,
 infatti ho altre due domande per te :)
 
 1) come diavolo fai a saperlo dato che nella pagine online di reference
 non c'e' scritto :p
 
 2)
 
 questa e' la parte incriminata del mio codice
 
 if __name__ == '__main__':
 # creo l'oggetto database
db = MySQLdb.connect(host = HOST,
   user = USER,
   passwd = PASSWD,
   db=DATABASE
   )
c=db.cursor() # crea il cursore
t = Timer(5.0, Repeated_Function(c))
t.start()
 
 
 lancio lo script,
 viene eseguita la Repeated_Function per 1 volta
 dopo 5 secondi ottengo questo errore
 
 Traceback (most recent call last):
   File threading.py, line 442, in __bootstrap
 self.run()
   File threading.py, line 607, in run
 self.function(*self.args, **self.kwargs)
 TypeError: 'NoneType' object is not callable
 
 
 la connessione al db dovrebbe essere sempre attiva giusto?
 e lo stesso dovrebbe valere per il cursore,
 non capisco cosa non funziona O_O
 
 
 L'errore ti è già stato segnalato.
 Comunque io farei molta attenzione ad usare i thread.
 
 Innanzitutto tu crei un cursore nel thread principale e poi lo passi ad 
 un altro thread.
 
 pySQLite, ad esempio non permette questa operazione.
 In molte altre librerie, inoltre, il cursore non è thread safe (ossia 
 avrai problemi se due thread accedono allo stesso cursore).
 
 Vedi cosa restituisce la variabile MySQLdb.threadsafety
 (http://python.org/dev/peps/pep-0249/)
 
 Cosa fa, in dettaglio, Repeated_Function?
 Cosa fa, invece, il thread principale?
 

Repeated funcion e' un nome del cavolo che ho messo solo perche' avevo
letto l'esempio secondo cui per usare il timer dovevo per forza usare
una funzione, quindi ne ho usata una come contenitore,
ne posso fare a meno, ne vorrei fare a meno..e' anche antiestetica sta
cosa.

cmq all'interno ci sono cavolatine + due funzioni 
con lo scopo di prendere dati dal
db ed elaborarli


se non dovessi usare sto timer, che cmq non riesco proprio a capire
dalla pagina del reference (la niubbagine non si sciacqua),
chiamerei le due funzioni direttamente da quella principale e via.


 
 Io passarei al thread secondario l'oggetto connessione, oppure la 
 connessione la creerei direttamente nel thread (se deve essere usata 
 solo qui).
 
 Un'ultima cosa: i nome delle funzioni non dovrebbero iniziale con una 
 lettara maiuscola: http://python.org/dev/peps/pep-0008/
 

Ti ringrazio tantissimo, mi serviva proprio una cosa del genere.
Tendenzialmente sono un tipo che vorrebbe essere ordinato, quando sa
come fare le cose!

 
 Entrambi i PEP sono anche stati tradotti in italiano, ma al momento non 
 ci sono link diretti sul sito.
 

Grazie per le dritte e la pazienza,
a te a alle altre persone che  hanno risposto.

Provero' altre soluzioni facendo tesoro dei vostri consigli.

ciao


-- 
  .''`.  |Utente Linux #370990 -- jabber: [EMAIL PROTECTED]
 : :'  : |No al TC-Palladium! http://www.no1984.org/
 `. `'`  |GnuPG ID Key:(0x)A07FF2DB --  gpg --search-keys 0xA07FF2DB
   `-|Fingerprint 3D2F DCD4 6AB3 9C52 995A  969E D634 02FF A07F F2DB
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] come ripeto una funzione dopo un certo intervallo di tempo?

2007-07-16 Per discussione allanon
Mon 16 July 2007, alle 00:22 +0200, Y3s ha scritto:
 
 Il giorno 15/lug/07, alle ore 23:38, allanon ha scritto:
 
 il mio intento e' quello di lasciare sempre aperta una connessione
 e di rinnovare solo la query ogni tot secondi
 
 
 In tal caso (ovvero se devi solo eseguire la query ogni 5 secondi,  
 senza fare niente nel frattempo), il codice più corretto dovrebbe  
 essere qualcosa tipo:
 
 import time
 
 while True:
 # Esegue la query o qualunque cosa
 ...
 time.sleep(5) # Attende 5 secondi

Mincia!!!
scusate l'espressione ma questa e' la soluzione ideale che avrei voluto
adottare fin dal principio al posto di quell'obbrobrio di creare una
funzione e ripeterla

E' che non so leggere la documentazione, cazzo
l'ho cercata in lungo e in largo, ma ero cieco, leggevo ma non vedevo.
noob

 
 Oppure usare il modulo sched, che è fatto proprio per questo genere  
 di cose.
 
 Nel caso in cui l'esecuzione del tuo programma deve proseguire  
 durante l'attesa, puoi anche provare a dare un'occhiata a Twisted,  
 che per queste cose ti da molta potenza a basso costo (è piuttosto  
 semplice in casi del genere)
 


bene altri due modi di fare che e' sempre meglio conoscere.

Grazie infinite, mi documentero' anche su queste.
(spero con esiti migliori)


-- 
  .''`.  |Utente Linux #370990 -- jabber: [EMAIL PROTECTED]
 : :'  : |No al TC-Palladium! http://www.no1984.org/
 `. `'`  |GnuPG ID Key:(0x)A07FF2DB --  gpg --search-keys 0xA07FF2DB
   `-|Fingerprint 3D2F DCD4 6AB3 9C52 995A  969E D634 02FF A07F F2DB
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] come ripeto una funzione dopo un certo intervallo di tempo?

2007-07-15 Per discussione allanon
Ciao a tutti, vorrei chiedervi aiuto su questo mio problema di ripetere
una funzione dopo un certo intervallo di tempo

Nella pagina 
http://www.python.org/doc/current/lib/timer-objects.html
trovo un simpatico esempio che purtroppo non funziona

ovvero la classe Timer non la trova
neanche se importo thread

come potrei fare?


-- 
  .''`.  |Utente Linux #370990 -- jabber: [EMAIL PROTECTED]
 : :'  : |No al TC-Palladium! http://www.no1984.org/
 `. `'`  |GnuPG ID Key:(0x)A07FF2DB --  gpg --search-keys 0xA07FF2DB
   `-|Fingerprint 3D2F DCD4 6AB3 9C52 995A  969E D634 02FF A07F F2DB
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] come ripeto una funzione dopo un certo intervallo di tempo?

2007-07-15 Per discussione allanon
Sun 15 July 2007, alle 16:47 +0200, Eriol ha scritto:
 On Friday 13 July 2007, allanon wrote:
  come potrei fare?
 
 Importare dal modulo threading:
 
 from threading import Timer
 

ti ringrazio per la dritta,
infatti ho altre due domande per te :)

1) come diavolo fai a saperlo dato che nella pagine online di reference
non c'e' scritto :p

2)

questa e' la parte incriminata del mio codice

if __name__ == '__main__':
# creo l'oggetto database
   db = MySQLdb.connect(host = HOST,
  user = USER,
  passwd = PASSWD,
  db=DATABASE
  )
   c=db.cursor() # crea il cursore
   t = Timer(5.0, Repeated_Function(c))
   t.start()


lancio lo script,
viene eseguita la Repeated_Function per 1 volta
dopo 5 secondi ottengo questo errore

Traceback (most recent call last):
  File threading.py, line 442, in __bootstrap
self.run()
  File threading.py, line 607, in run
self.function(*self.args, **self.kwargs)
TypeError: 'NoneType' object is not callable


la connessione al db dovrebbe essere sempre attiva giusto?
e lo stesso dovrebbe valere per il cursore,
non capisco cosa non funziona O_O

il mio intento e' quello di lasciare sempre aperta una connessione
e di rinnovare solo la query ogni tot secondi

-- 
  .''`.  |Utente Linux #370990 -- jabber: [EMAIL PROTECTED]
 : :'  : |No al TC-Palladium! http://www.no1984.org/
 `. `'`  |GnuPG ID Key:(0x)A07FF2DB --  gpg --search-keys 0xA07FF2DB
   `-|Fingerprint 3D2F DCD4 6AB3 9C52 995A  969E D634 02FF A07F F2DB
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] script per file di log ( linee guida)

2007-01-17 Per discussione allanon
Wed 17 January 2007, alle 18:49 +0100, Salvatore MONACO ha scritto:
 Ciao a tutti
 vorrei fare un script che legga un file di log 
 e fino a qua ci arrivo 
 
 f = open(path_del_file/nomefile.log, r)
 
 
 nel file di log c'e' una data sempre allo stesso posto come faccio a leggerla 
 mi servirebbe una cosa del tipo string tokenizer di java
 oppure leggere la data ultima modifica del log  
 
 poi la voglio confrontare con la data corrente e se non coincide scrivere un 
 altro file di log .

Te la posso dire in maniera indicativa, dato che uso python da...ho
aperto il tutorial qualche giorno fa e sono bianco come programmazione
in generale :p

Se tu usassi una regula expression per catturare la data che ti serve? 
inoltre se python puo eseguire comandi bash, puoi usare il comando date
per avere la data nel formato che meglio credi, quindi un confronto a
questo punto.

Cmq penso che python possa fare anche a meno di prendere la date di
sistema usando il comando bash, parola ai guru!!

ciauzz


-- 
  .''`.  |Utente Linux #370990 -- jabber: [EMAIL PROTECTED]
 : :'  : |No al TC-Palladium! http://www.no1984.org/
 `. `'`  |GnuPG ID Key:(0x)A07FF2DB --  gpg --search-keys 0xA07FF2DB
   `-|Fingerprint 3D2F DCD4 6AB3 9C52 995A  969E D634 02FF A07F F2DB
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python