Ejemplo n.º 1
0
    def observe(self, *, processes=1, period=1):
        log.info("Computing observations for campaign")
        self.observations = [
            Observation(self.dataset, observer, self.population, self.config)
            for observer in self.observers
        ]

        for observation in self.observations:
            observation.observe(processes=processes, period=period)
Ejemplo n.º 2
0
    def monitor_observations(self):

        last_run = None

        while True:

            # If there is no previous run, just run through anyway
            curtime = datetime.datetime.now()
            if last_run is not None:
                if (curtime - last_run).total_seconds() < 60:
                    continue

            last_run = curtime

            # Prepare observation data for the previous minute
            minute_obs = (curtime - datetime.timedelta(minutes=1)).replace(second=0)
            minute_store = minute_obs + datetime.timedelta(minutes=1)

            wind_df = self.get_wind_df(minute=minute_obs)
            wind_direction = self.average_wind_direction(wind_df=wind_df)
            wind_speed = self.average_wind_speed(wind_df=wind_df)
            wind_gust = self.max_wind_gust(wind_df=wind_df)
            rain = self.current_rain(minute=minute_obs)

            obs = Observation(dt=minute_store,
                              wind_direction=wind_direction,
                              wind_speed=wind_speed,
                              wind_gust=wind_gust,
                              rain=rain)

            try:

                session = db.get_session()
                session.add(obs)
                session.commit()

            except Exception as e:

                print("Unable to add observation due to exception %s" % e)