本文整理汇总了Python中rainman.utils.now函数的典型用法代码示例。如果您正苦于以下问题:Python now函数的具体用法?Python now怎么用?Python now使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了now函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: new_history_entry
def new_history_entry(self,rain=0):
"""Create a new history entry"""
values = {}
n = now()
for t,ml in self.meters.items():
sum_it = False
sum_val = 0
sum_f = 0
for m in ml:
f = m.weight
v = m.get_value()
if m.last_time is None:
f *= 0.01
else:
s = (n - m.last_time).total_seconds()
if s > METER_MAXTIME:
f *= 0.01
elif s > METER_TIME:
f *= METER_TIME/s
if v is not None:
sum_val += f*v
sum_f += f
if m.sum_it: sum_it = True
if sum_f:
if not sum_it:
sum_val /= sum_f
values[t] = sum_val
print("Values:",values, file=sys.stderr)
h = History(site=self.s,time=now(),**values)
h.save()
return h
开发者ID:M-o-a-T,项目名称:moat,代码行数:32,代码来源:runschedule.py
示例2: run_main_task
def run_main_task(self, kill=True):
"""Run the calculation loop."""
res = None
if not self._running.acquire(blocking=False):
return self._run_result.get()
try:
self._run_result = AsyncResult()
if kill:
self._run.kill()
n = now()
ts = (n-self._run_last).total_seconds()
if ts < 5:
try:
res = self.s.history.order_by("-time")[0]
except IndexError:
return None
else:
return res
self._run_last = n
res = self.main_task()
return res
finally:
self._run = gevent.spawn_later((self._run_last+self._run_delay-n).total_seconds(), connwrap,self.run_main_task, kill=False)
r,self._run_result = self._run_result,None
self._running.release()
r.set(res)
开发者ID:M-o-a-T,项目名称:moat,代码行数:27,代码来源:runschedule.py
示例3: _range
def _range(self,start,end, forced=False, add=0):
if start is None:
start = now()
r = []
if forced:
# If this pass considers force-open times, only this matters
r.append(self._forced_range(start,end))
else:
# Apply groups' times
r.append(self._group_range(start,end))
r.append(self._group_xrange(start,end))
# First step finished.
r = [range_intersection(*r)]
# Now add any group "allowed" one-shots.
for g in self.groups.all():
r.append(g._allowed_range(start,end))
r = [range_union(*r)]
# Now add any group "not-allowed" one-shots.
for g in self.groups.all():
r.append(g._not_blocked_range(start,end))
# Also apply my own exclusion times
r.append(self._not_blocked_range(start,end))
# Exclude times when this valve is already scheduled
r.append(self._not_scheduled(start,end))
# Only consider times when the controller can open the valve and
# there's enough water for it to run
r.append(self.controller._range(start,end,add=add))
r.append(self.feed._range(start,end,self.flow,add=add))
return range_intersection(*r)
开发者ID:M-o-a-T,项目名称:moat,代码行数:35,代码来源:valve.py
示例4: _on
def _on(self,sched=None,duration=None):
print >>sys.stderr,"Open",self.v.var
self.site.delay_on()
if self.controller.has_max_on():
print >>sys.stderr,"… but too many:", " ".join(str(v) for v in self.controller.c.valves.all() if SchedValve(v).on)
if sched:
sched.update(seen = False)
self.on = False
self.log("NOT running for %s: too many"%(duration,))
raise TooManyOn(self)
if duration is None and sched is not None:
duration = sched.duration
if duration is None:
self.log("Run (indefinitely)")
self.site.send_command("set","output","on",*(self.v.var.split()))
else:
self.log("Run for %s"%(duration,))
if not isinstance(duration,(int,long)):
duration = duration.total_seconds()
self.site.send_command("set","output","on",*(self.v.var.split()), sub=(("for",duration),("async",)))
if sched is not None:
if self.v.verbose:
self.log("Opened for %s"%(sched,))
self.sched = sched
if not sched.seen:
sched.update(start=now(), seen = True)
sched.refresh()
#Save(sched)
else:
if self.v.verbose:
self.log("Opened for %s"%(duration,))
开发者ID:smurfix,项目名称:HomEvenT,代码行数:31,代码来源:runschedule.py
示例5: stop
def stop(self):
n=now()
sec = (n-self.start).total_seconds()
if sec > 3:
self.res = sec
else:
self.feed.log("Flush broken: sec %s"%(sec,))
self._unlock()
开发者ID:M-o-a-T,项目名称:moat,代码行数:8,代码来源:runschedule.py
示例6: add_flow
def add_flow(self,val):
self.nflow += 1
if self.nflow == 2:
self.start = now()
if self.nflow > 2:
self.flow += val
if self.nflow == 9:
self.stop()
return False
开发者ID:M-o-a-T,项目名称:moat,代码行数:9,代码来源:runschedule.py
示例7: monitor_value
def monitor_value(self,event=None,**k):
"""monitor value NUMBER name…"""
self.refresh()
self.last_time = now()
try:
val = float(event[2])
self.add_value(val)
except Exception:
print_exc()
开发者ID:smurfix,项目名称:HomEvenT,代码行数:9,代码来源:runschedule.py
示例8: snapshot
def snapshot(self):
n = now()
if self.ts is not None and self.val is not None:
w=(n-self.ts).total_seconds()
if w > METER_TIME:
w = METER_TIME # limit weight if the measurer dies
self.avg += w*self.val
self.nval += w
self.ts = n
开发者ID:M-o-a-T,项目名称:moat,代码行数:9,代码来源:runschedule.py
示例9: current_history_entry
def current_history_entry(self,delta=15):
# assure that the last history entry is reasonably current
try:
he = self.s.history.order_by("-time")[0]
except IndexError:
pass
else:
if (now()-he.time).total_seconds() < delta:
return he
return self.new_history_entry()
开发者ID:M-o-a-T,项目名称:moat,代码行数:10,代码来源:runschedule.py
示例10: monitor_value
def monitor_value(self,value_delta=None,value=None,**kv):
"""monitor update name…"""
self.refresh()
self.last_time = now()
try:
if value_delta is not None:
self.add_value(value_delta)
else:
self.add_value(value)
except Exception:
print_exc()
开发者ID:M-o-a-T,项目名称:moat,代码行数:11,代码来源:runschedule.py
示例11: sync_history
def sync_history(self):
n=now()
try:
lv = self.v.levels.order_by("-time")[0]
except IndexError:
pass
else:
if self.v.time > lv.time:
self.log("Timestamp downdate: %s %s" % (self.v.time,lv.time))
self.v.update(time = lv.time)
self.v.refresh()
#Save(self.v)
if (n-self.v.time).total_seconds() > 3500:
self.new_level_entry()
开发者ID:smurfix,项目名称:HomEvenT,代码行数:14,代码来源:runschedule.py
示例12: run_every
def run_every(self,delay):
"""Initiate running the calculation and scheduling loop every @delay seconds."""
if self._run_delay is not None:
self._run_delay = delay # just update
return
self._run_delay = delay
self._run_last = now()
self._running = Semaphore()
self._run_result = None
sd = self._run_delay.total_seconds()/10
if sd < 66: sd = 66
self._run = gevent.spawn_later(sd, connwrap,self.run_main_task, kill=False)
if self._sched is not None:
self._sched.kill()
self._sched = gevent.spawn_later(2, connwrap,self.run_sched_task, kill=False, reason="run_every")
开发者ID:M-o-a-T,项目名称:moat,代码行数:16,代码来源:runschedule.py
示例13: new_level_entry
def new_level_entry(self,flow=0):
self.site.current_history_entry()
n=now()
self.v.refresh()
hts = None
try:
lv = self.v.levels.order_by("-time")[0]
except IndexError:
ts = n-timedelta(1,0)
else:
ts = lv.time
sum_f = 0
sum_r = 0
for h in self.site.s.history.filter(time__gt=ts).order_by("time"):
if self.v.verbose>2:
self.log("Env factor for %s: T=%s W=%s S=%s"%(h,h.temp,h.wind,h.sun))
f = self.env.env_factor(h, logger=self.log if self.v.verbose>2 else None)*self.v.adj
if self.v.verbose>1:
self.log("Env factor for %s is %s"%(h,f))
sum_f += self.site.s.db_rate * self.v.do_shade(self.env.eg.factor*f) * (h.time-ts).total_seconds()
sum_r += self.v.runoff*h.rain
ts=h.time
if self.v.verbose:
self.log("Apply env %f, rain %r,, flow %f = %f" % (sum_f,sum_r,flow,flow/self.v.area))
if self.v.time == ts:
return
if self.v.level < 0:
level = 0
else:
level = F('level')
level += sum_f
if (flow > 0 or sum_r > 0) and self.v.level > self.v.max_level:
level = self.v.max_level
level -= flow/self.v.area+sum_r
#if level < 0:
# self.log("Level %s ?!?"%(self.v.level,))
self.v.update(time=ts, level=level)
self.v.refresh()
lv = Level(valve=self.v,time=ts,level=self.v.level,flow=flow)
lv.save()
if self.on and not (self.sched and self.sched.forced) and self.v.level <= self.v.stop_level:
self._off(5)
开发者ID:M-o-a-T,项目名称:moat,代码行数:46,代码来源:runschedule.py
示例14: _on
def _on(self, caller, sched=None, duration=None):
print("Open", caller, self.v.var, file=sys.stderr)
self.site.delay_on()
if duration is None and sched is not None:
duration = sched.duration
if self.controller.has_max_on():
print(
"… but too many:",
", ".join(str(v) for v in self.controller.c.valves.all() if SchedValve(v).on),
file=sys.stderr,
)
if sched:
sched.update(seen=False)
self.log("NOT running %s for %s: too many" % (self.v, duration))
raise TooManyOn(self)
if duration is None:
self.log("Run (indefinitely)")
self.site.send_command("set", "output", "on", *(self.v.var.split()))
else:
self.log("Run for %s" % (duration,))
if not isinstance(duration, six.integer_types):
duration = duration.total_seconds()
try:
self.site.send_command(
"set", "output", "on", *(self.v.var.split()), sub=(("for", duration), ("async",))
)
except Exception:
# Something broke. Try to turn this thing off.
self.log(format_exc())
self.site.send_command("set", "output", "off", *(self.v.var.split()))
raise RuntimeError("Could not start (logged)")
if sched is not None:
if self.v.verbose:
self.log("Opened for %s" % (sched,))
self.sched = sched
if not sched.seen:
sched.update(start=now(), seen=True)
sched.refresh()
# Save(sched)
else:
if self.v.verbose:
self.log("Opened for %s" % (duration,))
开发者ID:smurfix,项目名称:MoaT,代码行数:44,代码来源:runschedule.py
示例15: has_rain
def has_rain(self):
"""Some monitor told us that it started raining"""
r,self.rain_timer = self.rain_timer,gevent.spawn_later(self.s.db_rain_delay,connwrap,self.no_rain)
if r:
r.kill()
return
self.log("Started raining")
self.rain = True
#for v in self.s.valves.all():
vo = Valve.objects.filter(controller__site=self.s, runoff__gt=0)
for v in vo.all():
valve = SchedValve(v)
if valve.locked:
continue
try:
valve._off(1)
except NotConnected:
pass
except Exception:
self.log_error(v)
Schedule.objects.filter(valve__in=vo, start__gte=now()-timedelta(1),seen=False).delete()
self.run_main_task()
开发者ID:M-o-a-T,项目名称:moat,代码行数:23,代码来源:runschedule.py
示例16: watch_state
def watch_state(self,value=None,**kv):
"""output change NAME ::value ON"""
on = (str(value).lower() in ("1","true","on"))
if self._flow_check is not None:
# TODO
self.on = on
self._flow_check.state(on)
return
if self.locked:
self.on = on
return
try:
if on != self.on:
n=now()
print("Report %s" % ("ON" if on else "OFF"),self.v.var,self.sched, file=sys.stderr)
if self.sched is not None and not on:
self.sched.update(db_duration=(n-self.sched.start).total_seconds())
self.sched.refresh()
self.sched_ts = self.sched.end
self.sched = None
flow,self.flow = self.flow,0
# If nothing happened, calculate.
if not on:
duration = n-self.on_ts
maxflow = self.v.flow * duration.total_seconds()
if (not flow or not self.v.feed.var) or flow > 2*maxflow:
flow = maxflow
self.new_level_entry(flow)
if not on:
if self.v.level > self.v.stop_level + (self.v.start_level-self.v.stop_level)/5:
self.v.update(priority=True)
self.log("Done for %s, level is now %s"%(duration,self.v.level))
self.on = on
self.on_ts = n
except Exception:
print_exc()
开发者ID:M-o-a-T,项目名称:moat,代码行数:37,代码来源:runschedule.py
示例17: queryset
def queryset(self, request):
qs = super(LevelInline, self).queryset(request)
return qs.filter(time__gte = now()-timedelta(1,0)).order_by("-time")
开发者ID:smurfix,项目名称:HomEvenT,代码行数:3,代码来源:admin.py
示例18: list_range
def list_range(self):
if self.days.count()+self.xdays.count()+self.overrides.filter(start__gt=now()).count() == 0:
return u"‹no dates›"
return super(Group,self).list_range()
开发者ID:M-o-a-T,项目名称:moat,代码行数:4,代码来源:group.py
示例19: save
def save(self,commit=True):
if self.instance.id is None:
self.instance.time = now()
self.instance.valve = self.aux_data['valve']
self.instance.forced = True
return super(LevelForm,self).save(commit)
开发者ID:pombreda,项目名称:MoaT,代码行数:6,代码来源:level.py
示例20: _run_schedule
def _run_schedule(self):
if self.sched_job is not None:
self.sched_job.kill()
self.sched_job = None
if self.locked:
if self.v.verbose:
print("SCHED LOCKED2 %s" % (self.v.name,), file=sys.stderr)
return
n = now()
try:
if self.sched is not None:
self.sched.refresh()
if self.sched.end <= n:
if self.v.verbose:
print("Turn off: %s+%s <= %s" % (self.sched.start,self.sched.duration,n), file=sys.stderr)
self._off(2)
self.sched = None
else:
self.sched_job = gevent.spawn_later((self.sched.end-n).total_seconds(),connwrap,self.run_sched_task,reason="_run_schedule 1")
if self.v.verbose:
print("SCHED LATER %s: %s" % (self.v.name,humandelta(self.sched.end-n)), file=sys.stderr)
return
except ObjectDoesNotExist:
pass # somebody deleted it *shrug*
sched = None
if self.sched_ts is None:
try:
sched = self.v.schedules.filter(start__lt=n).order_by("-start")[0]
except IndexError:
self.sched_ts = n-timedelta(1,0)
else:
self.sched_ts = sched.end
if sched.end > n: # still running
if self.v.verbose:
print("SCHED RUNNING %s: %s" % (self.v.name,humandelta(sched.end-n)), file=sys.stderr)
try:
self._on(1,sched, sched.end-n)
except TooManyOn:
self.log("Could not schedule: too many open valves")
except NotConnected:
self.log("Could not schedule: connection to MoaT failed")
return
try:
sched = self.v.schedules.filter(start__gte=self.sched_ts).order_by("start")[0]
except IndexError:
if self.v.verbose:
print("SCHED EMPTY %s: %s" % (self.v.name,str_tz(self.sched_ts)), file=sys.stderr)
self._off(3)
return
if sched.end <= n:
if self.v.verbose:
print("SCHED %s: sched %d done for %s" % (self.v.name,sched.id,humandelta(n-sched.end)), file=sys.stderr)
self.sched_ts = None
return
if sched.start > n:
if self.v.verbose:
print("SCHED %s: sched %d in %s" % (self.v.name,sched.id,humandelta(sched.start-n)), file=sys.stderr)
self._off(4)
self.sched_job = gevent.spawn_later((sched.start-n).total_seconds(),connwrap,self.run_sched_task,reason="_run_schedule 2")
return
try:
self._on(2,sched)
except TooManyOn:
self.log("Could not schedule: too many open valves")
except NotConnected:
self.log("Could not schedule: connection to MoaT failed")
开发者ID:M-o-a-T,项目名称:moat,代码行数:70,代码来源:runschedule.py
注:本文中的rainman.utils.now函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论