示例#1
0
 def register(self, task: Task) -> None:
     self.tasks[task.name] = task
     if task.queue not in self.queues:
         logger.info(
             f"Creating queue {task.queue} (if not already existing)")
         postgres.register_queue(self.connection, task.queue)
         self.queues.add(task.queue)
示例#2
0
def test_register_queue_conflict(connection, get_all):
    postgres.register_queue(connection, "marsupilami")

    pk = postgres.register_queue(connection, "marsupilami")

    assert pk is None
    result = get_all("queues", "queue_name")
    assert result == [{"queue_name": "marsupilami"}]
示例#3
0
def test_finish_task(get_all, connection):
    postgres.register_queue(connection, "queue_a")
    postgres.launch_task(connection, "queue_a", "task_1", "lock_1", {"a": "b"})
    task = next(postgres.get_tasks(connection, "queue_a"))

    assert get_all("tasks", "status") == [{"status": "doing"}]

    postgres.finish_task(connection, task_id=task.id, status="done")

    assert get_all("tasks", "status") == [{"status": "done"}]
示例#4
0
def test_get_tasks(connection):
    postgres.register_queue(connection, "queue_a")
    postgres.register_queue(connection, "queue_b")
    postgres.launch_task(connection, "queue_a", "task_1", "lock_1", {"a": "b"})
    # We won't see this one because of the lock
    postgres.launch_task(connection, "queue_a", "task_2", "lock_1", {"c": "d"})
    postgres.launch_task(connection, "queue_a", "task_3", "lock_2", {"e": "f"})
    # We won't see this one because of the queue
    postgres.launch_task(connection, "queue_b", "task_4", "lock_3", {"g": "h"})

    result = list(postgres.get_tasks(connection, "queue_a"))

    t1, t2 = result
    assert result == [
        postgres.TaskRow(id=t1.id,
                         args={"a": "b"},
                         targeted_object="lock_1",
                         task_type="task_1"),
        postgres.TaskRow(id=t2.id,
                         args={"e": "f"},
                         targeted_object="lock_2",
                         task_type="task_3"),
    ]
示例#5
0
def test_launch_task(connection, get_all):
    queue = "marsupilami"
    postgres.register_queue(connection, queue)
    pk = postgres.launch_task(connection,
                              queue=queue,
                              name="bob",
                              lock="sher",
                              kwargs={
                                  "a": 1,
                                  "b": 2
                              })

    result = get_all("tasks", "id", "args", "status", "targeted_object",
                     "task_type")
    assert result == [{
        "id": pk,
        "args": {
            "a": 1,
            "b": 2
        },
        "status": "todo",
        "targeted_object": "sher",
        "task_type": "bob",
    }]
示例#6
0
def test_register_queue(connection, get_all):
    pk = postgres.register_queue(connection, "marsupilami")

    result = get_all("queues", "*")
    assert result == [{"id": pk, "queue_name": "marsupilami"}]