Mercurial > code > home > repos > homeauto
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)