Re: [Python] Oggi la Packt regala un libro su Python [Modern Python Cookbook]
* 05/06/2017, Francesco Maida wrote : thx ... ho comprato un libro giusto 2 gg fa :) -- Never try to teach a pig to sing. It wastes your time and annoys the pig. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] genropy for dummy
salve a tutti, scusate la domanda forse banale ... uso Pylons/Pyramid per le mie webapp e stavo cercando di capire se genropy facesse al caso mio per futuri utilizzi. mi sono perso completamente (certamente per mia ignoranza) nella documentazione. ho creato il project ecc ecc ma la mia domanda e': come faccio a mappare una url ad un file python ? in Pylons/Pyramid ho il controller/action ... come funziona in genropy ? se qualcuno ha un link a qualche spiegazione piu' "terra terra" mi farebbe un grosso favore postandomelo. grazie anticipate -- Never try to teach a pig to sing. It wastes your time and annoys the pig. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Io lo so che coem sistemista faccio schifo
* 19/03/2015, Carlos Catucci wrote : pero' che due maroni. Ho sempre usato hosting (tipo Alwaysdata) che mi danno la possibilita' di deployare un progetto Django senza dover impazzie troppo. Al massimo richiedono una specigfica struttura nell'albero delel directories, tipo mettere static in root del progetto oppure nelal cartella dove riside anche settings.py, per dire. Stavolta devo deployare su un server su cui o pieno accesso. Primo tentativo: nginx+uwsgi. Non va neppure se lo prendo a calci sui denti. io uso nginx+uwsgi (emperor) con piu' webapp Pylons+Pyramid e funziona; ti passo di seguito un esempio di configurazione; il file .ini e' lo standard Pylons/Pyramid. nginx: server { ... location / { include /etc/nginx/uwsgi_params; uwsgi_param SCRIPT_NAME ''; uwsgi_read_timeout 180; uwsgi_pass_request_headers on; uwsgi_pass 127.0.0.1:5011; } } uwsgi_params: uwsgi_param QUERY_STRING $query_string; uwsgi_param REQUEST_METHOD $request_method; uwsgi_param CONTENT_TYPE $content_type; uwsgi_param CONTENT_LENGTH $content_length; uwsgi_param REQUEST_URI$request_uri; uwsgi_param PATH_INFO $document_uri; uwsgi_param DOCUMENT_ROOT $document_root; uwsgi_param SERVER_PROTOCOL$server_protocol; uwsgi_param HTTPS $https if_not_empty; uwsgi_param UWSGI_SCHEME $scheme; uwsgi_param REMOTE_ADDR$remote_addr; uwsgi_param REMOTE_PORT$remote_port; uwsgi_param SERVER_PORT$server_port; uwsgi_param SERVER_NAME$server_name; uwsgi: uwsgi socket0.0.0.0:5011/socket pluginspython27/plugins uidutentemio/uid gidutentemio/gid virtualenv/home/utentemio/projects/virtualenv mastertrue/master processes4/processes harakiri180/harakiri post-buffering1000/post-buffering vacuumtrue/vacuum ini-paste/home/utentemio/projects/acme/acme.ini/ini-paste chdir/home/utentemio/projects/acme/chdir envPYTHON_EGG_CACHE=/home/utentemio/tmp/env pythonpath/home/utentemio/projects/acme/pythonpath pythonpath/home/utentemio/.local/lib/python2.7/site-packages/pythonpath pythonpath/home/utentemio/projects/lib/python2.7/site-packages/pythonpath pythonpath/usr/lib/python2.7/site-packages/pythonpath /uwsgi -- Never try to teach a pig to sing. It wastes your time and annoys the pig. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] thread e subprocess
* 29/10/2014, Manlio Perillo wrote : volevo ringraziare Manlio e Daniele per i consigli. alla fine ho risolto con il multiprocessing ThreadPool; codice piu' pulito, lineare, leggibile e sicuro. saluti -- Never try to teach a pig to sing. It wastes your time and annoys the pig. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] thread e subprocess
* 30/10/2014, Manlio Perillo wrote : Nel tuo caso non credo valga la pena, a meno di avere un centinaio di client e vuoi avere un alto livello di concorrenza. Certo, evitare di usare thread e fork nello stesso programma è una buona cosa: eh infatti. magari non lo applico direttamente adesso, ma averne un idea per trovarmi eventualmente preparato in futuro non sarebbe male. saluti -- Never try to teach a pig to sing. It wastes your time and annoys the pig. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] thread e subprocess
salve a tutti, sto lavorando su uno script che lancia su piu' client un comando. per il momento sto usando subprocess, ma volevo lanciare i processi in parallelo e ricavare l'output mano a mano che i processi terminano. tenete conto che lo script va lanciato da cron, e mi serve l'output del comando per inviarlo via mail. dopo varie prove sono arrivato a questo, ma mi chiedevo se fosse il modo giusto (cioe' l'utilizzo del contatore _act) per aspettare che tutti i processi terminino e per leggere dalla queue l'output. grazie in anticipo: [CODE] #!/usr/bin/env python2.7 # import subprocess as sp import threading as thr try: import queue except ImportError: import Queue as queue def run_command(qq, args): try: _cmd = list(args) _userid = _cmd[1] _proc = sp.Popen(_cmd, stdout=sp.PIPE, stderr=sp.PIPE) (_stdout, _stderr) = _proc.communicate() qq.put(' *** %s ***\n\n[STDOUT]: %s\n[STDERR]: %s\n\n *** END ***\n\n' % ( _userid, _stdout, _stderr,)) except Exception as err: log.error('errore %s: %s' % (_userid, str(err))) qq.put(' *** %s ***\n\n[ERRORE]: %s\n\n *** END ***\n\n' % ( _userid, str(err),)) finally: qq.task_done() def run_unison(clients, qq, args): _act = 0 for k, v in clients.items(): for scr in v['server']: _cmd = [ 'ssh', '%s@%s' % (k, v['host'],), '/Users/%s/bin/%s_%s.command' % (k, k, scr,) ] + _extra_params t = thr.Thread(target=run_command, args=(qq, _cmd)) t.start() _act += 1 print(' ') while _act 0: _out_qq = qq.get() print(_out_qq.decode('utf8')) _act -= 1 if __name__ == '__main__': qq = queue.Queue() run_unison(_cli, qq, args) [CODE] -- Never try to teach a pig to sing. It wastes your time and annoys the pig. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] thread e subprocess
* 29/10/2014, Daniele Varrazzo wrote : Preparati, perche' ora si scatena la flame war che scatta automaticamente quando qualcuno pronuncia la parola thread. lungi da me ! ;-) cmq cercando su internet ho trovato tutto e il contrario di tutto, ma mai precisamente quello che serviva a me. Penso vada abbastanza bene, perche' non hai race condition: _act viene comunque gestito solo dal thread principale. ok Un modo di coordinarsi piu` robusto sarebbe quello di usare Thread.join, ma come avrai gia` scoperto questo ti impedirebbe di avere un output graduale nel thread principale. Lo puoi usare se eviti la print nel loop principale: lanci prima tutti i processi nei thread separati, poi t.join() per ogni thread. questo posso provare a farlo. ma il join lo mettersti DOPO aver lanciato i singoli thread ? cioe' qualcosa del genere: [CODE] _ths = [] for k, v in clients.items(): for scr in v['server']: _cmd = [ 'ssh', '%s@%s' % (k, v['host'],), '/Users/%s/bin/%s_%s.command' % (k, k, scr,) ] + _extra_params _ths.append(thr.Thread(target=run_command, args=(qq, _cmd))) _ths[-1].start() for _th in _ths: _th.join() [/CODE] Nel tuo codice, qq.task_done() non credo ti serva a niente: quello serve se es. il thread principale chiamasse qq.put() e poi qq.join() ed avessi un pool di worker thread che chiamassero qq.get() e qq.task_done(): ah ok ! ho letto malissimo io :-| cosi' potresti avere es. un pool di workers a lavoro in round-robin sulla coda dei compiti (es. 10 processi a lavoro su 100 compiti). Tu invece hai un mapping 1-1 tra processi e compiti e solo una coda di risultati: la tua struttura e' piu' semplice ma probabilmente scala peggio: se avessi 1000 compiti da fare la tua macchina non sarebbe molto felice di lanciare 1000 thread + 1000 processi tutti insieme. tieni conto che sono degli script da lanciare ogni 10/15 minuti su dei Mac (con un lock in locale che impedisce di lanciare piu' volte lo script) quindi niente di trascendentale. cmq adesso ci provo a fare le correzioni che hai detto, e se ho altre domande mi faccio risentire. grazie mille per le spiegazioni ! saluti P.S. non uso cron sui Mac perche' dalla 10.8 in poi e' stato inglobato in launchd e, praticamente, non funziona, senza nessun segnale nei log :-( -- Never try to teach a pig to sing. It wastes your time and annoys the pig. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] thread e subprocess
* 29/10/2014, Daniele Varrazzo wrote : Io ne posso pure tenere conto :) Ti spiego solo che finche' l'input e` contenuto il programma ancora ancora funziona, ma resta uno script che a fronte di un input di dimensioni impreviste avrebbe un'occupazione illimitata di risorse. Sta a te tenerne conto :) Se hai gli elementi per essere sicuro che non succedera` maimaimaimai puoi tenerlo com'e`, oppure puoi renderlo robusto a fronte di imprevisti (e imparare a coordinare un pool di workers con una queue, che e' un pattern molto utile). ok ... con la list ed il join funziona alla perfezione. poi magari mi guardo anche i consigli di manlio. grazie ancora -- Never try to teach a pig to sing. It wastes your time and annoys the pig. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] thread e subprocess
* 29/10/2014, Manlio Perillo wrote : tenete conto che lo script va lanciato da cron, e mi serve l'output del comando per inviarlo via mail. dopo varie prove sono arrivato a questo, ma mi chiedevo se fosse il modo giusto (cioe' l'utilizzo del contatore _act) per aspettare che tutti i processi terminino e per leggere dalla queue l'output. Nel codice del thread ti suggerisco di usare la funzione subprocess.check_output. In generale io proverei ad usare multiprocessing.Pool ed il metodo map. con map avevo problemi a passare i parametri, se nn mi sbaglio. adesso che l'ho fatto girare magari ci perdo un po' piu' di tempo. Purtroppo non esiste l'analogo Pool nel modulo threading, però da una veloce ricerca è venuta fuori questa sorpresa: [2]http://stackoverflow.com/questions/3033952/python-thread-pool-simila r-to-the-multiprocessing-pool from multiprocessing.pool import ThreadPool usando ThreadPool.map il tuo codice diventa molto più semplice ed inoltre non soffri del problema che ti ha segnalato Daniele su troppi processi/thread in esecuzione. adesso vedo anche questo. Se sei curioso esiste anche una alternativa senza usare un thread o processo di supporto, ma è più complesso e non trovi nulla di pronto nella stdlib (forse qualcosa in Python 3.x). curioso sarei curioso ... cosa dovrei guardare ? grazie e ciao -- Never try to teach a pig to sing. It wastes your time and annoys the pig. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] thread e subprocess
* 29/10/2014, Manlio Perillo wrote : Quindi devi fare tutto a mano, ossia lanciare i processi con subprocess (o fork + exec) e poi usare select/poll per verificare quando ci sono dei dati da leggere dallo stdout di ciascun processo, accumulando i dati in un buffer.à Se sei su Windows sono guai, ma si può fare anche se in modo diverso. i server sono Linux. grazie mille. me la studio un po' -- Never try to teach a pig to sing. It wastes your time and annoys the pig. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Mac osx e cartella site-packages
* 06/06/2014, Daniele Zambelli wrote : Salve a tutti, In un corso che sto tenendo ho dei colleghi che possiedono un Mac, ma io non lo conosco per niente, potreste dirmi dove si trova la cartella dove mettere le librerie, quella che in Windows è site-packages o in Linux dist-packages? macosx e' tipo unix ... se devi copiare librerie e non installarle, vai in utility e apri il terminale. ti si apre nella home directory dell'utente loggato. crea (presumendo tu voglia utilizzare la 2.7) .local/lib/python2.7/site-packages e copiaci le lib dentro. poi negli script eventualmente aggiungi all'inizio import os, sys sys.path.append(os.path.join(os.environ['HOME'], '.local/lib/python2.7/site-packages')) import tualib ciao ... spero di aver capito la domanda. -- Never try to teach a pig to sing. It wastes your time and annoys the pig. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Come pubblico il mio progetto django?
* 05/04/2014, Gollum1 wrote : Ciao Lista, Sto studiando qualcosa di django (tempo tiranno permettendo), ma quello che non riesco a capire, è come pubblico poi il mio progetto? quello che non riesco a capire è come dire ad apache di usare python come interprete. da qualche parte leggo di usare mod-python (ma viene indicato come problematico in diversi forum), come ho trovato anche un altro modulo, che ora non ricordo più... non uso Django ma Pylons/Pyramid, e nn uso apache ma nginx. se nn vuoi mettere mano su apache per evitare problemi, installa uwsgi e nginx e segui qualche tutorial tipo: http://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html nn ci ho piu' provato, ma nn avendo php da mettere online ho lasciato apache perche' mi aveva dato problemi con mod_python. con nginx+uwsgi e' stato molto piu' semplice. saluti -- Never try to teach a pig to sing. It wastes your time and annoys the pig. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] autenticazione windows
* 14/03/2014, Lorena Doria wrote : ciao, è utilissima e fa proprio al caso mio, però ho il problema che io devo usare python 2.5 che non supporta la funzione with come posso ovviare al problema? Grazie 1 http://legacy.python.org/dev/peps/pep-0343/ Transition Plan In Python 2.5, the new syntax will only be recognized if a future statement is present: from __future__ import with_statement This will make both 'with' and 'as' keywords. Without the future statement, using 'with' or 'as' as an identifier will cause a Warning to be issued to stderr. -- Never try to teach a pig to sing. It wastes your time and annoys the pig. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python