Python server with Quart asyncio + Threading, serving the webapp, and websockets, sse demos.

We've provided some boilerplate to spin up a Python server that can communicate with the node server or directly to the browser. It can also serve the built files and website, serve a custom REST api with direct python integration, and otherwise demonstrates a high performance python server skeleton.

We included presets to use Quart's https production server (via hypercorn) as long as an ssl certificate is provided. See the top of the server.py file for server settings which are configured manually.

Our python tooling documents a high performance multi-user python scenario with an order of operations shown to run simultaneous thread processes for a dedicated server thread. It's is scalable and production-ready, with enough documentation for you to find where to insert your code (hint: start with the _thread_main function and follow the queues to how the sockets get updated) and how to update SSE and Websocket queues to any connected users.

Code: tinybuild/python

Settings

## 
production = False ### For serving HTTPS, use False for HTTP and hot reloading quart (only if this file changes)
host = 'localhost' ## e.g. mywebsite.com
port = 7000
startpage = 'index.html'
base_dir = '../../' ## Example serves both templates and static files from the base dir
debug = False

config = {
    'keyfile':'node_server/ssl/key.pem',
    'certfile':'node_server/ssl/cert.pem',
    'bind':host+':'+str(port)
}


Then run:
python tinybuild/python/server.py

Then find http://localhost:7000 to see the built app using the same start page the node server uses

or http://localhost:7000/test to see a test websocket stream from the python thread (if using our default test server routine)

For client.py pip install websockets

More Information

Quart is natively asyncio but otherwise mimics flask. This means much faster concurrent (non-blocking) python server processing, and we included an example of implementing threads in python for more advanced processing needs. You can see this in action at our dedicated repo: esbuild_base_python.

This is one of the highest performance Python backends you could use, and we saved you a lot of testing! See the code for line-by-line documentation.

Also, find client.py to test the websocket from python! The server by default streams a counter to any open websocket and SSE connections.