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

celery.utils.graph

Dependency graph implementation.

exception celery.utils.graph.CycleError[source]

A cycle was detected in an acyclic graph.

class celery.utils.graph.DOT[source]

Constants related to the dot format.

ATTR = '{name}={value}'
ATTRSEP = ', '
DIRS = {'digraph': '->', 'graph': '--'}
EDGE = '{INp}"{0}" {dir} "{1}" [{attrs}]'
HEAD = '\n{IN}{type} {id} {{\n{INp}graph [{attrs}]\n'
NODE = '{INp}"{0}" [{attrs}]'
TAIL = '{IN}}}'
class celery.utils.graph.DependencyGraph(it=None, formatter=None)[source]

A directed acyclic graph of objects and their dependencies.

Supports a robust topological sort to detect the order in which they must be handled.

Takes an optional iterator of (obj, dependencies) tuples to build the graph from.

Warning

Does not support cycle detection.

add_arc(obj)[source]

Add an object to the graph.

add_edge(A, B)[source]

Add an edge from object A to object B.

I.e. A depends on B.

connect(graph)[source]

Add nodes from another graph.

edges()[source]

Return generator that yields for all edges in the graph.

format(obj)[source]
items()
iteritems()
repr_node(obj, level=1, fmt='{0}({1})')[source]
to_dot(fh, formatter=None)[source]

Convert the graph to DOT format.

Parameters:
topsort()[source]

Sort the graph topologically.

Returns:

of objects in the order in which they must be handled.

Return type:

List

update(it)[source]

Update graph with data from a list of (obj, deps) tuples.

valency_of(obj)[source]

Return the valency (degree) of a vertex in the graph.

class celery.utils.graph.GraphFormatter(root=None, type=None, id=None, indent=0, inw='    ', **scheme)[source]

Format dependency graphs.

FMT(fmt, *args, **kwargs)[source]
attr(name, value)[source]
attrs(d, scheme=None)[source]
draw_edge(a, b, scheme=None, attrs=None)[source]
draw_node(obj, scheme=None, attrs=None)[source]
edge(a, b, **attrs)[source]
edge_scheme = {'arrowcolor': 'black', 'arrowsize': 0.7, 'color': 'darkseagreen4'}
graph_scheme = {'bgcolor': 'mintcream'}
head(**attrs)[source]
label(obj)[source]
node(obj, **attrs)[source]
node_scheme = {'color': 'palegreen4', 'fillcolor': 'palegreen3'}
scheme = {'arrowhead': 'vee', 'fontname': 'HelveticaNeue', 'shape': 'box', 'style': 'filled'}
tail()[source]
term_scheme = {'color': 'palegreen2', 'fillcolor': 'palegreen1'}
terminal_node(obj, **attrs)[source]