Beispiel #1
0
    def delay(self, *args: Any, **kwargs: Any) -> AsyncResult:
        """
        Traditional Celery-like interface to enqueue a task for execution by the
        workers.

        The `args` and `kwargs` will be passed through to the task when executed.

        Examples
        --------
        >>> @app.task
        >>> def foo(x, bar=None):
        ...     time.sleep(x)
        ...     if bar == "mystr":
        ...         return False
        ...     return True
        ...
        >>> foo.delay(1)
        >>> foo.delay(2, bar="mystr")
        """
        job = Job(
            task=self.name,
            args=list(args),
            kwargs=kwargs,
            tries=0,
            max_retries=self.max_retries,
        )
        send(self.app, job)
        return AsyncResult(job=job, app=self.app)
Beispiel #2
0
def test_module(app, job, xid):
    actions.send(app, job, xid=xid)

    assert state.get_status(app, job.uuid) == SENT
    assert state.get_job(app, job.uuid).status == SENT
    assert state.count_jobs(app) == 1
    assert state.get_messages(
        app, app.keys.queue) == [Message(id=xid, uuid=job.uuid)]

    with executor(app):
        wait_for_results(app, length=1)

    assert actions.result(app, job, timeout=1)["return_value"] == job.args[0]
    assert state.get_info(app, app.keys.queue).groups == 1
    assert state.get_groups(app, app.keys.queue)[0].name == app.keys.group
    assert state.get_stream(app, app.keys.queue).key == app.keys.queue
    assert state.count_results(app) == 1

    with pytest.raises(JobNotFound):
        state.get_job(app, "nope")
Beispiel #3
0
def failing_message(app, failing_job, xid):
    send(app, failing_job, xid=xid)
Beispiel #4
0
def messages(app, jobs):
    for xid, job in jobs:
        send(app, job, xid=xid)
Beispiel #5
0
def message(app, job, xid):
    send(app, job, xid=xid)