Provide a Bokeh Application Handler to build up documents by running a specified Python function.

This Handler is not used by the Bokeh server command line tool, but is often useful if users wish to embed the Bokeh server programmatically:

def make_doc(doc: Document):
    # do work to modify the document, add plots, widgets, etc.
    return doc

app = Application(FunctionHandler(make_doc))

server = Server({'/bkapp': app}, io_loop=IOLoop.current())

For complete examples of this technique, see examples/server/api

class FunctionHandler(func: Callable[[Document], None], *, trap_exceptions: bool = False)[source]#

A Handler that accepts a plain python function to use for modifying Bokeh Documents.

For example, the following code configures a handler with a function that adds an empty plot to a Document:

def add_empty_plot(doc: Document):
    p = figure(x_range=(0, 10), y_range=(0, 10))
    return doc

handler = FunctionHandler(add_empty_plot)

This handler could be configured on an Application, and the Application would run this function every time a new session is created.

__init__(func: Callable[[Document], None], *, trap_exceptions: bool = False) None[source]#
  • func (callable) –

    a function to modify and return a Bokeh Document. The function should have the form:

    def func(doc: Document):
        # modify doc
        return doc

    and it should return the passed-in document after making any modifications in-place.

  • trap_exceptions (bool) – should exceptions in func be caught and logged or allowed to propagate

modify_document(doc: Document) None[source]#

Execute the configured func to modify the document.

After this method is first executed, safe_to_fork will return False.

property safe_to_fork: bool#

Whether it is still safe for the Bokeh server to fork new workers.

False if modify_doc has already been called.