changeset 1017:3edda1f7a322

LoopingCall sets the interview between calls, but I want the period of calls Ignore-this: 224af7b995395d5e0c43c382360e4c90 darcs-hash:ac6b7338bc3a80b4b53be59b63c4a612daf49f7b
author drewp <drewp@bigasterisk.com>
date Tue, 15 Dec 2015 00:41:51 -0800
parents 1c5ff4c16f1e
children 651e5c5b1f3d
files service/powerEagle/reader.py
diffstat 1 files changed, 5 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/service/powerEagle/reader.py	Tue Dec 15 00:27:24 2015 -0800
+++ b/service/powerEagle/reader.py	Tue Dec 15 00:41:51 2015 -0800
@@ -5,7 +5,6 @@
 from logsetup import log
 sys.path.append("/my/proj/room")
 from carbondata import CarbonClient
-from twisted.internet.task import LoopingCall
 from twisted.internet.defer import inlineCallbacks
 from twisted.internet import reactor
 from cyclone.httpclient import fetch
@@ -19,12 +18,12 @@
 class Poller(object):
     def __init__(self, carbon):
         self.carbon = carbon
-        self.lastPollTime = 0
-        LoopingCall(self.poll).start(interval=periodSec)
+        reactor.callLater(0, self.poll)
 
     @inlineCallbacks
     def poll(self):
         ret = None
+        startTime = time.time()
         try:
             resp = yield fetch(
                 'http://{deviceIp}/cgi-bin/cgi_manager'.format(deviceIp=deviceIp),
@@ -51,7 +50,9 @@
             log.error("failed: %r", e)
             log.error(repr(ret))
 
-        self.lastPollTime = time.time()
+        now = time.time()
+        goal = startTime + periodSec
+        reactor.callLater(max(1, goal - now), self.poll)
 
 
 log.setLevel(logging.INFO)