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


Streaming, truncating, non-recursive version of repr().

Differences from regular repr():

  • Sets are represented the Python 3 way: {1, 2} vs set([1, 2]).

  • Unicode strings does not have the u' prefix, even on Python 2.

  • Empty set formatted as set() (Python 3), not set([]) (Python 2).

  • Longs don’t have the L suffix.

Very slow with no limits, super quick with limits.

celery.utils.saferepr.reprstream(stack, seen=None, maxlevels=3, level=0, isinstance=<built-in function isinstance>)[source]

Streaming repr, yielding tokens.

celery.utils.saferepr.saferepr(o: Any, maxlen: Optional[int] = None, maxlevels: int = 3, seen: Optional[Set] = None) str[source]

Safe version of repr().


Make sure you set the maxlen argument, or it will be very slow for recursive objects. With the maxlen set, it’s often faster than built-in repr.