def update_schedule(instance, raw, using, update_fields, **kwargs): if instance.status == 1: if instance.attached_job_id is not None: job = instance.attached_job instance.attached_job_id = None instance.save() # in case foreignkey not update instance.attached_job = None sched.unschedule_job(job) return from sokoban.sync_worker import sync_project if instance.attached_job_id is None: interval = timedelta job_name = '%s : %s' % (instance.owner.id, instance.owner.name) job = sched.add_interval_job(sync_project, start_date=instance.start_time, args=(instance.owner_id,), name=job_name, hours=instance.interval) instance.attached_job_id = job.id instance.save() sched._wakeup.set() return interval = timedelta(hours=instance.interval) trigger = IntervalTrigger(interval, instance.start_time) instance.attached_job.trigger = trigger instance.attached_job.compute_next_run_time(timezone.now()) instance.attached_job.save() sched._wakeup.set()
def delete_schedule(instance, using, **kwargs): if not instance.attached_job_id: return job = DjangoJob.objects.filter(id=instance.attached_job_id).get() sched.unschedule_job(job)