Re: [Python] socket - questa me la dovete proprio spiegare..
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..
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?
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?
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?
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?
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)
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