def test_task_limits(): task = models.LimitedTask.create_task("test") with pytest.raises(TaskLimitError): task = models.LimitedTask.create_task("test") orm.work_task(task) task = models.LimitedTask.create_task("test")
def test_task_limits_with_id(): task_a = models.LimitedTaskWithLimitId.create_task("test") task_b = models.LimitedTaskWithLimitId.create_task("other") with pytest.raises(TaskLimitError): task_a = models.LimitedTaskWithLimitId.create_task("test") with pytest.raises(TaskLimitError): task_b = models.LimitedTaskWithLimitId.create_task("other") orm.work_task(task_a) orm.work_task(task_b) task_a = models.LimitedTaskWithLimitId.create_task("test") task_b = models.LimitedTaskWithLimitId.create_task("other")
def test_work_tasks(): task = models.TestTask.create_task(1, 2) orm.claim_task(task) assert task.queue_id assert task.taskclaim orm.work_task(task) assert task.status == "completed" assert int(task.output) == 3
def run(self, *args, **kwargs): task_id = kwargs.get("task_id") task = specify_task(Task.objects.get(id=task_id)) self.log_info(f"Processing {task}") work_task(task) if task.error: self.log_info("Task failed") self.log_error(task.error) else: self.log_info("Task finished")
def test_parent_task(): task_par = models.TestTask.create_task(1, 2) task_chl = models.TestTask.create_task(7, 3, parent=task_par) # cant run child task before parent is finished with pytest.raises(IOError): orm.work_task(task_chl) tasks = orm.fetch_tasks() # child task should not be fetched while its waiting # for parent assert task_chl not in tasks assert task_par in tasks orm.work_task(task_par) tasks = orm.fetch_tasks() assert task_chl in tasks # child task can be worked now task_chl.refresh_from_db() orm.work_task(task_chl)
def test_task_result(): task = models.TestTask.create_task(1, 2) orm.work_task(task) assert task.result == 3