bokeh.document.locking#

class UnlockedDocumentProxy(doc: Document)[source]#

Wrap a Document object so that only methods that can safely be used from unlocked callbacks or threads are exposed. Attempts to otherwise access or change the Document results in an exception.

__init__(doc: Document) None[source]#
add_next_tick_callback(callback: Callback) NextTickCallback[source]#

Add a “next tick” callback.

Parameters

callback (callable) –

remove_next_tick_callback(callback: NextTickCallback) None[source]#

Remove a “next tick” callback.

Parameters

callback (callable) –

without_document_lock(func: F) NoLockCallback[F][source]#

Wrap a callback function to execute without first obtaining the document lock.

Parameters

func (callable) – The function to wrap

Returns

a function wrapped to execute without a Document lock.

Return type

callable

While inside an unlocked callback, it is completely unsafe to modify curdoc(). The value of curdoc() inside the callback will be a specially wrapped version of Document that only allows safe operations, which are:

Only these may be used safely without taking the document lock. To make other changes to the document, you must add a next tick callback and make your changes to curdoc() from that second callback.

Attempts to otherwise access or change the Document will result in an exception being raised.

func can be a synchronous function, an async function, or a function decorated with asyncio.coroutine. The returned function will be an async function if func is any of the latter two.