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)
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)