Exemple #1
0
def test_configure_task_schedule_in_and_schedule_at(job_store):
    with pytest.raises(ValueError):
        tasks.configure_task(
            name="my_name",
            job_store=job_store,
            schedule_at=pendulum.datetime(2000, 1, 1, tz="Europe/Paris"),
            schedule_in={"hours": 2},
        )
def test_configure_task_schedule_in_and_schedule_at(job_manager):
    with pytest.raises(ValueError):
        tasks.configure_task(
            name="my_name",
            job_manager=job_manager,
            schedule_at=conftest.aware_datetime(2000, 1, 1, tz_offset=1),
            schedule_in={"hours": 2},
        )
Exemple #3
0
    def configure_task(self,
                       name: str,
                       *,
                       allow_unknown: bool = True,
                       **kwargs: Any) -> jobs.JobDeferrer:
        """
        Configure a task for deferring, using its name

        Parameters
        ----------
        name : str
            Name of the task. If not explicitly defined, this will be the dotted path
            to the task (``my.module.my_task``)

        **kwargs: Any
            Parameters from `Task.configure`

        Returns
        -------
        ``jobs.JobDeferrer``
            Launch ``.defer(**task_kwargs)`` on this object to defer your job.
        """
        from procrastinate import tasks

        self.perform_import_paths()
        try:
            return self.tasks[name].configure(**kwargs)
        except KeyError as exc:
            if allow_unknown:
                return tasks.configure_task(name=name,
                                            job_manager=self.job_manager,
                                            **kwargs)
            raise exceptions.TaskNotFound from exc
def test_configure_task(job_manager):
    job = tasks.configure_task(
        name="my_name", job_manager=job_manager, lock="sher", task_kwargs={"yay": "ho"}
    ).job

    assert job.lock == "sher"
    assert job.task_kwargs == {"yay": "ho"}
Exemple #5
0
def test_configure_task_schedule_at(job_store):
    job = tasks.configure_task(
        name="my_name",
        job_store=job_store,
        schedule_at=pendulum.datetime(2000, 1, 1, tz="Europe/Paris"),
    ).job

    assert job.scheduled_at == pendulum.datetime(2000, 1, 1, tz="Europe/Paris")
def test_configure_task_schedule_in(job_manager, mocker):
    now = conftest.aware_datetime(2000, 1, 1, tz_offset=1)
    mocker.patch.object(utils, "utcnow", return_value=now)
    job = tasks.configure_task(
        name="my_name", job_manager=job_manager, schedule_in={"hours": 2}
    ).job

    assert job.scheduled_at == conftest.aware_datetime(2000, 1, 1, 2, tz_offset=1)
def test_configure_task_schedule_at(job_manager):
    job = tasks.configure_task(
        name="my_name",
        job_manager=job_manager,
        schedule_at=conftest.aware_datetime(2000, 1, 1, tz_offset=1),
    ).job

    assert job.scheduled_at == conftest.aware_datetime(2000, 1, 1, tz_offset=1)
Exemple #8
0
def test_configure_task_schedule_in(job_store):
    now = pendulum.datetime(2000, 1, 1, tz="Europe/Paris")
    with pendulum.test(now):
        job = tasks.configure_task(name="my_name",
                                   job_store=job_store,
                                   schedule_in={
                                       "hours": 2
                                   }).job

    assert job.scheduled_at == pendulum.datetime(2000,
                                                 1,
                                                 1,
                                                 2,
                                                 tz="Europe/Paris")
Exemple #9
0
    def configure_task(self, name: str, **kwargs: Any) -> jobs.JobDeferrer:
        """
        Configure a task for deferring, using its name

        Parameters
        ----------
        name : str
            Name of the task. If not explicitly defined, this will be the dotted path
            to the task (``my.module.my_task``)

        **kwargs: Any
            Parameters from `Task.configure`

        Returns
        -------
        ``jobs.JobDeferrer``
            Launch ``.defer(**task_kwargs)`` on this object to defer your job.
        """
        from procrastinate import tasks

        return tasks.configure_task(name=name,
                                    job_store=self.job_store,
                                    **kwargs)
Exemple #10
0
def test_configure_task_no_lock(job_store):
    job = tasks.configure_task(name="my_name", job_store=job_store).job

    assert uuid.UUID(job.lock)