<html><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:10pt"><div class="" style="">Ciao a tutti,</div><div class="" style="">sto scrivendo un bridge che importa all'interno di un database alcuni dati da files csv.</div><div class="" style="">Ho testato le varie parti singolarmente (download ftp, parsing csv/xml, inserimento dei record nel database).</div><div class="" style="">Ora sto unendo le varie parti per creare l'automatismo e mi ritrovo con uno strano errore che sembra dovuto al garbage collector in fase conclusiva.</div><div class="" style="">Non capisco se questo sia dovuto ad un errore di Python (sto usando Portable Python 3.2.5.1) che ho notato a volte ha dei comportamenti strani a seconda se utilizzo l'interprete remoto o esterno.</div><div class="" style=""><br class="" style=""></div><div class="" style="color: rgb(0, 0, 0); font-size:
 13.333333969116211px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal">Se lo eseguo dalla riga di comando i passaggi sembrano essere tutti in regola, ma alla fine mi da:</div><div class="" style="color: rgb(0, 0, 0); font-size: 13.333333969116211px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal">Exception IndexError: IndexError:('tuple index out of range'), in <module 'threading' from  'C:\....\Portable Python 3.2.5.1\App\lib\threading.py></div><div class="" style="color: rgb(0, 0, 0); font-size: 13.333333969116211px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal"><br class="" style=""></div><div class="" style="color: rgb(0, 0, 0); font-size:
 13.333333969116211px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal">Se lo eseguo dall'editor alla stessa maniera i passaggi sembrano essere fatti tutti, ma alla fine mi da quanto segue:</div><div class="" style="background-color: transparent"><br class="" style=""></div><div class="" style="background-color: transparent; color: rgb(0, 0, 0); font-size: 13.333333969116211px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal">Exception IndexError: 'tuple index out of range' in 'garbage collection' ignored</div><div class="" style="background-color: transparent">Traceback (most recent call last):</div><div class="" style="background-color: transparent">  File "<string>", line 73, in execInThread</div><div class="" style="background-color: transparent">  File "<string>", line
 44, in __call__</div><div class="" style="background-color: transparent">  File "C:\Users\ppancino.SBP\Portable Python 3.2.5.1\App\lib\site-packages\rpyc\core\netref.py", line 196, in __call__</div><div class="" style="background-color: transparent">    return syncreq(_self, consts.HANDLE_CALL, args, kwargs)</div><div class="" style="background-color: transparent">  File "C:\Users\ppancino.SBP\Portable Python 3.2.5.1\App\lib\site-packages\rpyc\core\netref.py", line 71, in syncreq</div><div class="" style="background-color: transparent">    return conn.sync_request(handler, oid, *args)</div><div class="" style="background-color: transparent">  File "C:\Users\ppancino.SBP\Portable Python 3.2.5.1\App\lib\site-packages\rpyc\core\protocol.py", line 431, in sync_request</div><div class="" style="background-color: transparent">    self.serve(0.1)</div><div class="" style="background-color: transparent">  File
 "C:\Users\ppancino.SBP\Portable Python 3.2.5.1\App\lib\site-packages\rpyc\core\protocol.py", line 379, in serve</div><div class="" style="background-color: transparent">    data = self._recv(timeout, wait_for_lock = True)</div><div class="" style="background-color: transparent">  File "C:\Users\ppancino.SBP\Portable Python 3.2.5.1\App\lib\site-packages\rpyc\core\protocol.py", line 337, in _recv</div><div class="" style="background-color: transparent">    data = self._channel.recv()</div><div class="" style="background-color: transparent">  File "C:\Users\ppancino.SBP\Portable Python 3.2.5.1\App\lib\site-packages\rpyc\core\channel.py", line 50, in recv</div><div class="" style="background-color: transparent">    header = self.stream.read(self.FRAME_HEADER.size)</div><div class="" style="background-color: transparent">  File "C:\Users\ppancino.SBP\Portable Python
 3.2.5.1\App\lib\site-packages\rpyc\core\stream.py", line 166, in read</div><div class="" style="background-color: transparent">    raise EOFError(ex)</div><div class="" style="background-color: transparent">EOFError: [Errno 10054] Connessione in corso interrotta forzatamente dall'host remoto</div><div class="" style="background-color: transparent"><br class="" style=""></div><div class="" style="background-color: transparent; color: rgb(0, 0, 0); font-size: 13.333333969116211px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal">Ora, č chiaro che le informazioni sono poche, non posso certo postarvi tutto il codice, ma vorrei sapere se questo tipo di errore vi dice qualcosa dal momento che non ho idea di cosa possa essere.</div><div class="" style="background-color: transparent; color: rgb(0, 0, 0); font-size: 13.333333969116211px; font-family: HelveticaNeue, 'Helvetica Neue',
 Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal">Se puņ essere utile vi posto il codice dello script che mette assieme le altre librerie che ho sritto per avviare l'importazione automatizzata.</div><div class="" style="background-color: transparent; color: rgb(0, 0, 0); font-size: 13.333333969116211px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal"><br class="" style=""></div><div class="" style="background-color: transparent">import ftp_connection</div><div class="" style="background-color: transparent">from rapportini_parsing import rapportini_parser</div><div class="" style="background-color: transparent">import SQLServer_connection</div><div class="" style="background-color: transparent">import sys</div><div class="" style="background-color: transparent"><br></div><div class="" style="background-color: transparent">if __name__ == '__main__':</div><div class=""
 style="background-color: transparent">    try:</div><div class="" style="background-color: transparent">    <span class="" style="white-space:pre"> </span>#iterabile contenente vari file rapportino</div><div class="" style="background-color: transparent">        csv_rapportino=ftp_connection.ftp_importazione()</div><div class="" style="background-color: transparent">        #parsing rapportini</div><div class="" style="background-color: transparent"><span class="Apple-tab-span" style="white-space:pre"> </span></div><div class="" style="background-color: transparent; color: rgb(0, 0, 0); font-size: 13.333333969116211px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal;"><span class="Apple-tab-span" style="white-space:pre">  </span>#creazione oggetto gestione database</div><div class="" style="background-color: transparent"> 
       db=SQLServer_connection.DB_connection().connect()</div><div class="" style="background-color: transparent"><br class="" style=""></div><div class="" style="background-color: transparent">        for rapportino in csv_rapportino:</div><div class="" style="background-color: transparent"><br class="" style=""></div><div class="" style="background-color: transparent">            #a ciascun rapportino corrisponde una stringa contenente a sua volta uno o piu' rapportini</div><div class="" style="background-color: transparent">            for element in rapportini_parser(rapportino).rapportini_output:</div><div class="" style="background-color: transparent">                SQLServer_connection.inserimento_rapportino(db, element,commit= "FALSE")</div><div class="" style="background-color: transparent">   
 except:</div><div class="" style="background-color: transparent">        sys.exit()</div><div class="" style="background-color: transparent"><br class="" style=""></div><div class="" style="background-color: transparent">    finally:</div><div class="" style="background-color: transparent">        csv_rapportino.__exit__()</div><div class="" style="background-color: transparent">        db.__exit__()</div><div class="" style="background-color: transparent"><br></div><div class="" style="background-color: transparent; color: rgb(0, 0, 0); font-size: 13.333333969116211px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal;">Grazie per qualunque eventuale suggerimento</div><div class="" style="background-color: transparent; color: rgb(0, 0, 0); font-size: 13.333333969116211px; font-family: HelveticaNeue, 'Helvetica Neue',
 Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal;"><br></div><div class="" style="background-color: transparent; color: rgb(0, 0, 0); font-size: 13.333333969116211px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-style: normal;">Piergiorgio</div></div></body></html>