def test_ensure_enqueued(redis: Redis, random_queue_name: str) -> None: j1 = enqueue(redis, random_queue_name, "minique_tests.jobs.sum_positive_values") j2 = enqueue(redis, random_queue_name, "minique_tests.jobs.sum_positive_values") queue = j1.get_queue() assert queue.length == 2 assert j1.ensure_enqueued() == (False, 0) # Did not need to re-enqueue assert j2.ensure_enqueued() == (False, 1) # Did not need to re-enqueue assert (redis.lpop(queue.redis_key) == j1.id.encode() ) # pop first item, must be the first job assert queue.length == 1 assert j1.ensure_enqueued() == (True, 1) # Did re-enqueue in last position assert j2.ensure_enqueued() == (False, 0) # Did not need to re-enqueue TestWorker.for_queue_names(redis, queue.name).tick() assert queue.length == 1 TestWorker.for_queue_names(redis, queue.name).tick() assert queue.length == 0 for job in (j1, j2): with pytest.raises( Exception): # Refuses to be enqueued after completion job.ensure_enqueued()
# -*- coding: utf-8 -*- __author__ = 'fjs' from connection import BlockingConnectionPool from redis.client import Redis client = Redis(connection_pool=BlockingConnectionPool(max_connections=2)) client.set("fjs", "fjs") print client.get("fjs") client.lpush("nn", 1) print client.lpop("nn")