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)
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")
def failing_message(app, failing_job, xid): send(app, failing_job, xid=xid)
def messages(app, jobs): for xid, job in jobs: send(app, job, xid=xid)
def message(app, job, xid): send(app, job, xid=xid)