Using Server State

To communicate between multiple views and middlewares, Lona has a atomic state object in server.state that behaves like a Dict. All access to server.state triggers server.state.lock implicit. To perform multiple accesses in a transaction, server.state.lock can be used explicit.

from lona import LonaView


class MyLonaView(LonaView):
    def handle_request(self, request):
        with self.server.state.lock:
            self.server.state['foo'] = 'foo'
            self.server.state['bar'] = 'bar'

        print(self.server.state['foo'])

The server.state can be initialized in the settings using INITIAL_SERVER_STATE:

# settings.py
INITITAL_SERVER_STATE = {
    "myvalue": 42,
}