Source code for faust.web.apps.graph
"""Web endpoint showing graph of running :pypi:`mode` services."""
import io
from faust import web
__all__ = ['Graph', 'blueprint']
blueprint = web.Blueprint('graph')
[docs]@blueprint.route('/', name='detail')
class Graph(web.View):
"""Render image from graph of running services."""
[docs] async def get(self, request: web.Request) -> web.Response:
"""Draw image of the services running in this worker."""
try:
import pydot
except ImportError:
return self.text('Please install pydot: pip install pydot',
status=500)
o = io.StringIO()
beacon = self.app.beacon.root or self.app.beacon
beacon.as_graph().to_dot(o)
graph, = pydot.graph_from_dot_data(o.getvalue())
return self.bytes(graph.create_png(), content_type='image/png')