Danke werde ich mir gleich mal anschauen,
das hatte ich mir mitlerweile auch gedacht das es daran liegt.
Ich poste einfach mal den zusammengekürzen source.
Der deine Vermutung bestätigt, muss jetzt nur schauen wie ich das umschiffe.
Im Moment läuft es zwar aber in zwei scripten die über nen cronjob aufgerufen werden und das möchte ich nicht, will ja lernen wies geht.
Code: Alles auswählen
#!/usr/bin/python2.7
# -*- coding: iso-8859-15 -*-
import time
import threading
import datetime
timeformat = '%d-%m-%Y %H:%M:%S'
def main():
timer_daily_thread = threading.Thread(target=timer_daily, args=())
timer_weekly_thread = threading.Thread(target=timer_weekly, args=())
timer_daily_thread.start()
timer_weekly_thread.start()
timer_daily_thread.join()
timer_weekly_thread.join()
def timer_daily():
print 'timer_daily start', time.strftime(timeformat)
time.sleep(time_to_next_minute())
check_temp('daily')
def timer_weekly():
print 'timer_weekly start', time.strftime(timeformat)
time.sleep(time_to_next_hour())
check_temp ('weekly')
def time_to_next_hour():
now = datetime.datetime.now().replace(microsecond=0)
plus1 = now + datetime.timedelta(hours=1)
time_clear = plus1.replace(minute=0,second=0,microsecond=0)
time_to_hour = time_clear - now
return time_to_hour.total_seconds()
def time_to_next_minute():
now = datetime.datetime.now().replace(microsecond=0)
plus1 = now + datetime.timedelta(minutes=1)
time_clear = plus1.replace(second=0,microsecond=0)
time_to_minute = time_clear - now
# return time_to_minute.total_seconds()
return 1 # faster run into recursion error
def get_current_temp(): # dumy function
import random
temp1 = random.randint(20,25)
temp2 = random.randint(10,50)
return str(temp1)+'.'+str(temp2)
def check_temp(arg):
temperatur = get_current_temp()
rrd_switch(arg, temperatur)
def rrd_switch(arg, value):
if arg == 'daily':
rrd_insert_d(value)
if arg == 'weekly':
rrd_insert_w(value)
def rrd_insert_d(value):
print 'function rrd_insert_d with:', value
timer_daily()
def rrd_insert_w(value):
print 'function rrd_insert_w with:', value
timer_weekly()
if __name__=="__main__":
main()
Wie du schon meintest hab ich auch
def rrd_insert_d( value ):
print 'function rrd_insert_w with:', value
timer_daily()
als fehlerquelle identifiziert, hoffentlich krieg ich es mit deinen tipps hin das zu umschiffen
while true sollte funktionieren, allerdings wäre das eher ne dreckige lösung also eher die notlösung werde mir '
sched' module mal anschauen.