<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'><font face="Courier New">Ciao a tutti,</font><div><font face="Courier New">ecco ultime news</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">Ho finito di sistemare il codice e il file conf</font></div><div><font face="Courier New">Ora mi succede un paio di cose, che non riesco a spiegare.</font></div><div><font face="Courier New">Questo è il file conf sotto /etc/init</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New"><myservice.conf></font></div><div><font face="Courier New"><br></font></div><div><div><font face="Courier New">description "My Service"</font></div><div><font face="Courier New">author "Dario Concilio <dco@indhisys.it>"</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">start on startup</font></div><div><font face="Courier New">start on runlevel [234]</font></div><div><font face="Courier New">stop on runlevel [0156]</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">chdir /var/www/<span style="font-size: 12pt;">folder_service</span></font></div><div><font face="Courier New">exec python /var/www/folder_service/MyService.py</font></div><div><font face="Courier New">respawn</font></div></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">Nota: la mia cartella del codice python si trova in /var/www/ perché uso la www come share.</font></div><div><font face="Courier New">oltre a questo servizio ho un'interfaccia di configurazione dei setup del database postgresql fatta in PHP, quindi per comodità ho messo le 2 cartelle: servizio in python e sito PHP nella stessa share.</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">Non sono abbastanza ferrato per capire se questa scelta mi "compromette" qualcosa, magari se potete darmi qualche dritta....</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">Ora nel mio codice python</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New"><MyService.py></font></div><div><font face="Courier New"><br></font></div><div><div><font face="Courier New">import Services.TCPCollectorService</font></div><div><font face="Courier New">import logging</font></div><div><font face="Courier New">import ConfigParser</font></div><div><font face="Courier New">import multiprocessing</font></div><div><font face="Courier New">import signal</font></div><div><font face="Courier New">import time</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">event = multiprocessing.Event()</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">def errorOccurred(self, errorMessage):</font></div><div><font face="Courier New">    logging.error(ex)</font></div><div><font face="Courier New">    event.set()</font></div><div><font face="Courier New">    </font></div><div><font face="Courier New">def stopHandler(signum, frame):</font></div><div><font face="Courier New">    logging.info("Chiusura del servizio")</font></div><div><font face="Courier New">    event.set()</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">signal.signal(signal.SIGTERM, stopHandler)</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">if __name__ == '__main__':</font></div><div><font face="Courier New">    </font></div><div><font face="Courier New">    logging.basicConfig(filename='myservice.log',level=logging.INFO)</font></div><div><font face="Courier New">    logging.info("Lettura ini")</font></div><div><font face="Courier New">    </font></div><div><font face="Courier New">    #Caricamento dei file INI e setting delle variabili che servono a inizializzare il primo thread</font></div><div><font face="Courier New">    [...]</font></div><div><font face="Courier New">    </font></div><div><font face="Courier New">    tcpCollector = Services.TCPCollectorService.TcpCollectorService(addressForWeb, indhiVersion, debug, inoutPort, outMacroPort, bitrate)</font></div><div><font face="Courier New">    tcpCollector.errorOccurred += errorOccurred</font></div><div><font face="Courier New">    </font></div><div><font face="Courier New">    #Avvio del thread principale, lui avvierà 3 sotto-thread ulteriori</font></div><div><font face="Courier New">    try:</font></div><div><font face="Courier New">        #Avvio thread TCP Collector</font></div><div><font face="Courier New">        tcpCollector.start()</font></div><div><font face="Courier New">        logging.info("TCP Collector avviato")</font></div><div><font face="Courier New">        while not event.is_set():</font></div><div><font face="Courier New">            time.sleep(3)</font></div><div><font face="Courier New">        </font></div><div><font face="Courier New">    except Exception as ex:</font></div><div><font face="Courier New">        logging.error(ex)</font></div><div><font face="Courier New">        event.set()</font></div></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">L'effetto è che provando a riavviare il server, il python parte, lo vedo perché compare il file di log.</font></div><div><font face="Courier New">la cosa strana è che nel log trovo per 11 volte il messaggio "Lettura ini", mi aspettavo ovviamente una volta sola e i successivi log info inseriti nel codice</font></div><div><font face="Courier New"><br></font></div><div><div><font face="Courier New">INFO:root:Lettura ini</font></div><div><font face="Courier New">INFO:root:Lettura ini</font></div><div><font face="Courier New">INFO:root:Lettura ini</font></div><div><font face="Courier New">INFO:root:Lettura ini</font></div><div><font face="Courier New">INFO:root:Lettura ini</font></div><div><font face="Courier New">INFO:root:Lettura ini</font></div><div><font face="Courier New">INFO:root:Lettura ini</font></div><div><font face="Courier New">INFO:root:Lettura ini</font></div><div><font face="Courier New">INFO:root:Lettura ini</font></div><div><font face="Courier New">INFO:root:Lettura ini</font></div><div><font face="Courier New">INFO:root:Lettura ini</font></div></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">Inoltre quando provo da terminal (root) faccio stop myservice, mi dice </font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">stop: Unknown instance:</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">Se provo ad avviare manualmente mi da questo, quindi tutto ok in avvio.....</font></div><div><font face="Courier New"><br></font></div><div><div><font face="Courier New">myservice start/running, process 1337</font></div></div><div><br></div>                                        </div></body>
</html>