def schedule(args=None, kwargs=None, eta=None, delay=None, convert_utc=True, task_id=None): if delay and eta: raise ValueError('Both a delay and an eta cannot be ' 'specified at the same time') if delay: eta = (datetime.datetime.now() + datetime.timedelta(seconds=delay)) if eta: if is_naive(eta) and convert_utc: eta = local_to_utc(eta) elif is_aware(eta) and convert_utc: eta = aware_to_utc(eta) elif is_aware(eta) and not convert_utc: eta = make_naive(eta) cmd = klass((args or (), kwargs or {}), execute_time=eta, retries=retries, retry_delay=retry_delay, task_id=task_id) return self.enqueue(cmd)
def _normalize_execute_time(self, eta=None, delay=None, convert_utc=True): if delay and eta: raise ValueError('Both a delay and an eta cannot be ' 'specified at the same time') elif delay: method = (convert_utc and datetime.datetime.utcnow or datetime.datetime.now) return method() + datetime.timedelta(seconds=delay) elif eta: if is_naive(eta) and convert_utc: eta = local_to_utc(eta) elif is_aware(eta) and convert_utc: eta = aware_to_utc(eta) elif is_aware(eta) and not convert_utc: eta = make_naive(eta) return eta