rSimple python schedule two timed events -


i having trouble following scenario using python schedule module. want run login event @ time a, , run action @ time b.

the code not run intended behaviour describes , need help.

import sched import datetime  today = datetime.datetime.today() log = today.replace(hour=11, minute=59, second = 0) action= today.replace(hour=12, minute=0, second = 0)  scheduler = sched.scheduler(datetime.datetime.today(), time.sleep)  def login_event(name):     print 'event:', datetime.datetime.today(), name  def action_event(name):     print 'event:' datetime.datetime.today(),name  print 'start:', time.time() scheduler.enter(log, login_event, ('login')) scheduler.enter(action, login_event, ('action'))  scheduler.run() 

edit have altered code following still doesn't seem right in terms of how best implement behaviour.

import sched import datetime datetime import timedelta import datetime import time  today = datetime.datetime.today() log = datetime.datetime.now() + timedelta(minutes=1)# today.replace(hour=12, minute=46, second = 0) action= log + timedelta(minutes=2)   scheduler = sched.scheduler(time.time, time.sleep) print datetime.datetime.now  def login_event(name):     print 'login:', datetime.datetime.now(), name  def action_event(name):     print 'action:', datetime.datetime.now(), name  print 'start:', datetime.datetime.now()  scheduler.enter(1, 1, login_event, ('first',)) scheduler.enter(60, 1, action_event, ('second',))  scheduler.run() 

the following code hasn't been tested should work. i've put original code comment can see got wrong. need refer doc: https://docs.python.org/2/library/sched.html

import sched, time import datetime  today = datetime.datetime.today() log = today.replace(hour=11, minute=59, second = 0) action= today.replace(hour=12, minute=0, second = 0)  #scheduler = sched.scheduler(datetime.datetime.today(), time.sleep) #the first argument of sched.scheduler should function return number. scheduler = sched.scheduler(time.time, time.sleep)  def login_event(name):     print 'event:', datetime.datetime.today(), name  def action_event(name):     print 'event:', datetime.datetime.today(),name  print 'start:', time.time() 

scheduler.enter used relative delay. correct function use scheduler.enterabs need function convert datetime posix timestamp. can tricky in python 2.x due timezone issue. refer question: convert datetime unix timestamp , convert in python also, function takes 4 arguments.

#scheduler.enter(log, login_event, ('login')) #scheduler.enter(action, login_event, ('action')) scheduler.enterabs(timestamp(log), 0, login_event, ('login')) scheduler.enterabs(timestamp(action), 0, action_event, ('action'))  scheduler.run()