152 lines
4.4 KiB
Python
152 lines
4.4 KiB
Python
#!/usr/bin/python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
# readFile v. 0.1
|
|
# - single instance timer
|
|
# - invio multiplo x send eventi accodati
|
|
|
|
#---------------------------------------------------------------
|
|
|
|
import time
|
|
|
|
from datetime import datetime
|
|
|
|
import urllib
|
|
import ConfigParser
|
|
import os, sys
|
|
|
|
import logging
|
|
import logging.handlers
|
|
import Queue
|
|
|
|
import argparse
|
|
#--------------------------------------------------------------
|
|
|
|
# gestione parser argomenti in input
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("memFile")
|
|
parser.add_argument("logFile")
|
|
args = parser.parse_args()
|
|
|
|
#definizione variabili BASE
|
|
stepQueuePut=25000
|
|
stepQueueGet=250
|
|
NMAXSEND=500000 # limite invio file x fare prove...
|
|
idxMacchina = "2003"
|
|
|
|
#--------------------------------------------------------------
|
|
# Gestione coda (condivisa) x registrazione eventi ed invio URL
|
|
#print "Creazione coda illimitata"
|
|
Coda = Queue.Queue(0)
|
|
|
|
#---------------------------------------------------------------
|
|
#Funzione di scrittura su coda con try-except
|
|
|
|
def accoda(valore):
|
|
|
|
try:
|
|
Coda.put(valore)
|
|
except Queue.Full:
|
|
logPro.error( "Queue full" + dtEve + '#' + value + '#' + cont )
|
|
except:
|
|
logPro.error( "NETWORK:Errore http-no com rete-timeout" + url )
|
|
|
|
|
|
#--------------------------------------------------------------
|
|
# svuotaCoda x invio dati al server
|
|
def svuota_coda():
|
|
|
|
global NMAXSEND
|
|
|
|
try:
|
|
if not Coda.empty():
|
|
# invio SOLO i primi NMAXSEND eventi... SE minore del num eventi...
|
|
if NMAXSEND > Coda.qsize():
|
|
NMAXSEND = Coda.qsize()
|
|
|
|
|
|
i = 0
|
|
|
|
with open(args.logFile,"w") as outf:
|
|
while i <= NMAXSEND:
|
|
if not Coda.empty():
|
|
|
|
# formatto dataOra corrente
|
|
dtCurr = datetime.utcnow().strftime('%Y%m%d%H%M%S%f')[:-3]
|
|
|
|
#prendo primo elemento dalla coda
|
|
resp = Coda.get()
|
|
|
|
# recupero valori da elemento coda!
|
|
dtEve = resp.split("#")[0]
|
|
value = resp.split("#")[1]
|
|
cnt = resp.split("#")[2]
|
|
url = URLBASE + idxMacchina + URLADV1 + value
|
|
url = url + '&dtCurr=' + dtCurr + '&dtEve=' + dtEve + '&cnt=' + cnt
|
|
# CHIAMO URL
|
|
response3 = urllib.urlopen ( url )
|
|
answ3 = response3.read()
|
|
|
|
# registro chiamata + risposta
|
|
# outf.write(url + " --> " + answ3 + "\n")
|
|
|
|
# incremento e controllo se mostrare output
|
|
i += 1
|
|
if (i % stepQueueGet) == 0:
|
|
print "Inviati %d valori..." % i
|
|
|
|
print "Inviati %d valori..." % i
|
|
except:
|
|
print "Errore in svuotamento coda!"
|
|
|
|
|
|
#---------------------------------------------------------------
|
|
# MAIN
|
|
|
|
try:
|
|
config = ConfigParser.RawConfigParser()
|
|
config.read ( 'IOB.cfg' )
|
|
|
|
# NMAXSEND = config.getint ( 'time' , 'NMAXSEND' )
|
|
# idxMacchina = config.get ( 'id' , 'idxMacchina' )
|
|
|
|
|
|
URLBASE = config.get ( 'web' , 'URLBASE' )
|
|
URLADV1 = config.get ( 'web' , 'URLADV1' )
|
|
|
|
LOGFILE = config.get ( 'log' , 'LOGFILE' )
|
|
LOGLEVEL = config.get ( 'log' , 'LOGLEVEL' )
|
|
except:
|
|
print "\n\n" + PROGRAM_NAME + ' - Error 4 - in config file ' 'IOB.cfg'
|
|
sys.exit(1)
|
|
|
|
#---------------------------------------------------------------
|
|
|
|
dtCurr = datetime.utcnow().strftime('%H:%M:%S.%f')[:-3]
|
|
print "Inizio elaborazione: %s" % dtCurr
|
|
|
|
# Leggo il file!
|
|
i = 0
|
|
with open(args.memFile, 'r') as inf, open(args.logFile,"w") as outf:
|
|
data = inf.readlines()
|
|
|
|
print "Trovate %d da processare..." % len(data)
|
|
|
|
# leggo e metto in QUEUE...
|
|
for line in data:
|
|
accoda(line)
|
|
i += 1
|
|
if (i % stepQueuePut) == 0:
|
|
print "Accodati %d valori..." % i
|
|
|
|
print "Completata lettura file! %d righe accodate da trasmettere" % Coda.qsize()
|
|
|
|
dtCurr = datetime.utcnow().strftime('%H:%M:%S.%f')[:-3]
|
|
print "Inizio invio: %s" % dtCurr
|
|
|
|
|
|
# chiamo procedura x svuotare coda...
|
|
svuota_coda()
|
|
|
|
dtCurr = datetime.utcnow().strftime('%H:%M:%S.%f')[:-3]
|
|
print "Completato invio: %s" % dtCurr |