This document describes the current stable version of Celery (5.4). For development docs, go here.


API Reference

Embedded workers for integration tests.

class celery.contrib.testing.worker.TestWorkController(*args: Any, **kwargs: Any)[source]

Worker that can synchronize on being fully started.

class QueueHandler(queue)[source]

Handle errors which occur during an emit() call.

This method should be called from handlers when an exception is encountered during an emit() call. If raiseExceptions is false, exceptions get silently ignored. This is what is mostly wanted for a logging system - most users will not care about errors in the logging system, they are more interested in application errors. You could, however, replace this with a custom handler if you wish. The record which was being processed is passed in to this method.


Prepares a record for queuing. The object returned by this method is enqueued.

The base implementation formats the record to merge the message and arguments, and removes unpickleable items from the record in-place.

You might want to override this method if you want to convert the record to a dict or JSON string, or send a modified copy of the record while leaving the original intact.

ensure_started() None[source]

Wait for worker to be fully up and running.


Worker must be started within a thread for this to work, or it will block forever.

logger_queue = None
on_consumer_ready(consumer: Consumer) None[source]

Callback called when the Consumer blueprint is fully started.

celery.contrib.testing.worker.setup_app_for_worker(app: Celery, loglevel: str | int, logfile: str) None[source]

Setup the app to be used for starting an embedded worker.

celery.contrib.testing.worker.start_worker(app: Celery, concurrency: int = 1, pool: str = 'solo', loglevel: str | int = 'error', logfile: str = None, perform_ping_check: bool = True, ping_task_timeout: float = 10.0, shutdown_timeout: float = 10.0, **kwargs: Any) Iterable[source]

Start embedded worker.

Yields: – worker instance.