public ActionResult Get() { // Schedule for every 20 seconds RecurringJob.AddOrUpdate( () => GenerateReadings(), "0,20 * * * * *"); // Cache the last request time and update it var cachedLastRequestTime = lastRequestTime; lastRequestTime = DateTime.Now; return(Ok(readingRepository.GetReadings(cachedLastRequestTime))); }