Example #1
0
def test_sleep_task():
    generator = iter([SleepIteration(sleep=1)])
    task = ExecutorIterationTask(generator)

    with pytest.raises(SleepException):
        try:
            list(task)
        except SleepException as sleep_task:
            assert sleep_task.sleep == 1
            raise
Example #2
0
def test_exeption_iteration_in_pool2(pools):
    pools.append_pools({"testpool": 0})
    generator = iter([NextIterationInPools(pool_names=["testpool"]), "item2"])
    task = ExecutorIterationTask(generator)

    with pytest.raises(PoolOverflowingException):
        list(task)

    pools.update_pools({"testpool": 1})

    assert list(task) == ["item2"]
Example #3
0
def test_exeption_iteration_in_pool(pools):
    pools.append_pools({"testpool": 0})
    generator = iter([NextIterationInPools(pool_names=["testpool"]), "item"])
    task = ExecutorIterationTask(generator)

    with pytest.raises(PoolOverflowingException):
        try:
            list(task)
        except PoolOverflowingException as sleep_task:
            assert sleep_task.sleep == 1
            raise
Example #4
0
 def task(self, *args, **kwargs) -> ExecutorIterationTask:
     """Flow wrapper for scheduler and executor."""
     if self._task is not False:
         raise PermissionError(
             "For one class object, you can create one task")
     self._task = True
     return ExecutorIterationTask(
         self._iterator(*args, **kwargs),
         expires=self.Work.expires,
         soft_time_limit_seconds=self.Work.soft_time_limit_seconds,
     )
Example #5
0
    def order_task(*args, **kwargs):
        count_flows = 4
        worktimes = [
            pendulum.datetime(2021, 1, i + 1) for i in range(count_flows)
        ]

        for worktime in worktimes:
            NOTEBOOK.load.file_name = (
                f"{test_thread_executor_yandex_metrika_logs.__name__}.tsv")

            flow = ETLOperator(NOTEBOOK)
            generator = flow(start_period=worktime, end_period=worktime)

            yield ExecutorIterationTask(generator)
Example #6
0
def test_soft_time_limit():
    generator = (time.sleep(2) for i in range(1))
    task = ExecutorIterationTask(generator, soft_time_limit_seconds=1)

    with pytest.raises(SoftTimeLimitError):
        list(task)
Example #7
0
def test_expires():
    generator = (time.sleep(1) for i in range(1))
    task = ExecutorIterationTask(generator, expires=pendulum.now())

    with pytest.raises(ExpiredError):
        list(task)
Example #8
0
 def ordering_task(*args, **kwargs):
     for _ in range(count_task):
         yield ExecutorIterationTask(flow())
Example #9
0
 def task(self, *args, **kwargs) -> ExecutorIterationTask:
     """Flow wrapper for scheduler and executor."""
     return ExecutorIterationTask(self(*args, **kwargs),
                                  expires=None,
                                  soft_time_limit_seconds=None)