private static void UpdateHistoricalWeather(List <WeatherNode> nodes) { var endDate = DateTime.SpecifyKind(DateTime.Now.Date, DateTimeKind.Utc); var startDate = endDate.AddDays(-1 * DEFAULT_DAYS_TO_CHECK_FOR_HISTORICAL_WEATHER); int requestCount = 0; foreach (var node in nodes) { int nodeRequests = 0; var missingDates = GetMissingWeatherDatesForNode(node, startDate, endDate); foreach (var date in missingDates) { var result = _weatherClient.GetWeather(node.Name, date); if (result?.Hourly != null && result.Hourly.Any() && result?.Daily != null && result.Daily.Any()) { var dateTime = TimeConversion.ConvertToDateTime(result.Daily[0].Time); //Write to C* _session.Insert(result.Hourly); _session.Insert(result.Daily); //Increment counters nodeRequests++; requestCount++; //Check request limits and exit if reached cap if (requestCount >= MAX_HISTORICAL_FORECASTIO_REQUESTS_PER_RUN) { LogNodeHistoricalUpdate(nodeRequests, node.Name, missingDates.First(), date); return; } } } if (nodeRequests > 0) { LogNodeHistoricalUpdate(nodeRequests, node.Name, missingDates.First(), missingDates.Last()); return; } } }