def test_first_delayed_should_return_the_first_delayed_job_to_be_ready(self): Job.add_job(identifier='job:1', queue_name='test', delayed_for=5) job2 = Job.add_job(identifier='job:2', queue_name='test', delayed_for=1) queue = Queue.get_queue(name='test') attended_timestamp = datetime_to_score(parse(job2.delayed_until.hget())) job_ident, timestamp = queue.first_delayed self.assertEqual(job_ident, job2.ident) self.assertEqual(timestamp, attended_timestamp) timestamp = queue.first_delayed_time self.assertEqual(timestamp, attended_timestamp)
def test_delay_job_should_add_the_job_to_the_delayed_sortedset(self): delayed_until = datetime.utcnow() + timedelta(seconds=1) timestamp = datetime_to_score(delayed_until) job = Job(identifier='job:1', delayed_until=str(delayed_until)) queue = Queue.get_queue(name='test') queue.delay_job(job, delayed_until) delayed_jobs = queue.delayed.zrange(0, -1, withscores=True) self.assertEqual(delayed_jobs, [(job.ident, timestamp)]) # test a non-delayed job job2 = Job(identifier='job:2') queue.enqueue_job(job2) delayed_jobs = queue.delayed.zrange(0, -1, withscores=True) self.assertEqual(delayed_jobs, [(job.ident, timestamp)])