想必你已经很苦恼了。
有一个需求实现每10秒钟写文件:
def tick():
try:
current_time = time.strftime('%Y%m%d %H:%M:%S', time.localtime(time.time()))
print current_time
file_object = open('insert_data', 'a')
file_object.write(current_time + '\n')
except Exception,e:
print e
finally:
file_object.close()
def create_job(request):
result = scheduler.add_job(tick,trigger='interval',seconds=10,id='insert_time')
print ("add_job_result",result)
return HttpResponse({"1":"2"})
如果要实现修改job为20秒写入文件呢?之前一直都是用:
result = scheduler.reschedule_job(job_id='insert_time',trigger='interval',seconds=20)
这种方法实现的。modify_job无论怎么弄都是不成功!
后来看了源码。懂了:
temp_dict = {"seconds":20}
temp_trigger = scheduler._create_trigger(trigger='interval',trigger_args=temp_dict)
result = scheduler.modify_job(job_id='insert_time',trigger=temp_trigger)
这样就实现了。其实上面的那个rescheduler_job也是最终使用modify_job的。源码如下:
trigger = self._create_trigger(trigger, trigger_args)
now = datetime.now(self.timezone)
next_run_time = trigger.get_next_fire_time(None, now)
return self.modify_job(job_id, jobstore, trigger=trigger, next_run_time=next_run_time)