#!/usr/bin/env python2.4 #-*- coding: utf-8 -*- ########################################################## # ADQUISITOR DE DATOS v1.0 # ########################################################## # Autor: Juan Miguel Taboada Godoy # # Fecha: Malaga, 16 de febrero de 2007 # # Descripción: Fichero de configuración de Adquisión # # Versión: 2007021600 # # # # Codigo fuente bajo licencia GNU/GPL # # Centrologic (Computational Logistic Center) # # http://www.centrologic.com - info@centrologic.com # ########################################################## # Librerías import fcntl # Adquiere los datos pendientes de los SIGNALS from src.etcbin.adquirir_web import * # Librerias que voy a usar aquí import os import time import datetime import shutil from src.lib.DATE import tempo_limit # Decisión según parámetros de entrada import sys if ((len(sys.argv)==2) and (sys.argv[1]=='--silent')): debug=False else: debug=True try: # Consigo el candado de bloqueo sobre el fichero FILE=open(config.bloqueo(),"w") fcntl.flock(FILE.fileno(), fcntl.LOCK_EX|fcntl.LOCK_NB) # Descargo los datos de los Telemandos for telemando in listado_telemandos: # Cambio el debug telemando.set_debug(debug) try: # Creo el nombre del fichero destino date=datetime.datetime.fromtimestamp(time.time()) fecha=date.timetuple() destino="%s_%s" % (telemando.internal_id(),tempo_limit(fecha,telemando.valor("download_tempo"))) # Compruebo si el fichero existe telemando.debug("Comprobando la existencia previa del registro") try: file_exists=open("%sbak/%s.signal.dat" % (telemando.valor("dirtemp"),destino),'r') file_exists=True except: try: file_exists=open("%sbak/%s.signal.dat.gz" % (telemando.valor("dirtemp"),destino),'r') file_exists=True except: file_exists=False # Si el fichero existe if (not file_exists): # Descargo el fichero telemando.download() # Obtengo el listado de registradores listado_registradores=telemando.registradores() # Proceso la lista de registradores procesado_registrador=False for registrador in listado_registradores: # Obtengo el nombre del fichero try: fichero=registrador.fichero() except: fichero=None # Si hay fichero que procesar if (fichero): # Comprueba si el fichero esta comprimido o no file_compress=registrador.compress() # Si un registrado ya ha sido procesado, se elimina el resto (no se usan porque contienen la misma informacion) if (not procesado_registrador): # Copio el fichero a los destinos seleccionado if (not file_compress): # Si no esta comprimido, trabajo normalmente shutil.copyfile("%s.signal.dat" % (fichero),"%sdat/%s.signal.dat" % (telemando.valor("dirtemp"),destino)) shutil.copyfile("%s.signal.dat" % (fichero),"%sbak/%s.signal.dat" % (telemando.valor("dirtemp"),destino)) else: # Si esta comprimido uso la extension gz shutil.copyfile("%s.signal.dat.gz" % (fichero),"%sdat/%s.signal.dat.gz" % (telemando.valor("dirtemp"),destino)) shutil.copyfile("%s.signal.dat.gz" % (fichero),"%sbak/%s.signal.dat.gz" % (telemando.valor("dirtemp"),destino)) # Borro el fichero if (not file_compress): # Si no esta comprimido, trabajo normalmente os.unlink("%s.signal.dat" % (fichero)) else: # Si esta comprimido uso la extension gz os.unlink("%s.signal.dat.gz" % (fichero)) # Anoto que se ha procesado un registrador procesado_registrador=True else: telemando.debug("No es necesario sincronizar") telemando.debug("") except Exception,e: print "Error descargando el Telemando %s: %s" % (telemando.internal_id(),e) # Devuelvo el control FILE.close() except: # No hago nada y salgo FILE.close()