Simple (Embedded) Server#

The Simple Tiled Server is a utility for easily launching Tiled servers intended for tutorials and development. It employs only basic security and does not scale to large numbers of users.

By default, it uses temporary storage, but it can be configured to use persistent storage.

Quickstart#

This convenience function tiled.client.simple() launches a Tiled server in the background (on a thread) and returns a client connected to it.

from tiled.client import simple

# Default: temporary storage!
c = simple()

# Or use persistent storage
c = simple('path/to/some/directory')

When the server starts, a URL is printed to the console. Each launch generates a unique secret api_key. You can paste this URL into a browser to open Tiled’s web interface.

Readable storage#

Detectors or analysis programs often write files directly to disk. Tiled can make those files accessible without any re-uploading or reformatting.

For security reasons, the server administrator must designate which directories data can be registered from, like so.

c = simple(readable_storage=['path/to/some/directory/', 'another_directory/'])

Manual server management#

Under the hood, tiled.client.simple() uses tiled.server.SimpleTiledServer.

from tiled.server import SimpleTiledServer
from tiled.client import from_uri

server = SimpleTiledServer()
client = from_uri(server.uri)

The readable_storage option works the same way.

server = SimpleTiledServer(
    readable_storage=['path/to/some/directory/', 'another_directory/']
)

The server can be stopped by calling server.close(), or used as a context manager, which stops it automatically on exit:

with SimpleTiledServer() as server:
    client = from_uri(server.uri)
    ...

By default, the Simple Tiled Server allocates a temporary directory for storage, including files, embedded databases, and server logs. Its location is given at server.directory. The temporary directory is removed when the server is stopped.

To use persistent storage, specify a directory. If it does not exist, it will be created. It will not be removed when the server is stopped.

server = SimpleTiledServer("my_data/")

You can specify the port. By default, an available high port is randomly chosen.

server = SimpleTiledServer(port=8000)

You can also manually set the API key. This is sometimes handy for development, if you find yourself continually copy/pasting the server URL after relaunching the server. A hard-coded API key should not be used in production.

server = SimpleTiledServer(api_key="secret", port=8000)

These options are also available in the “quickstart” tiled.client.simple() function.

Warning

If the server is garbage collected, it will be stopped. The example below will not work because there is no reference to server kept in scope.

# Do not do this.

def f():
    server = SimpleTiledServer()
    client = from_uri(server.uri)
    return client

c = f()
# The server is started but then garbage collected and stopped.

The client will show errors like:

ConnectError('[Errno 111] Connection refused')

The tiled.client.simple() utility solves this problem by keeping references to the servers that it starts in a list, tiled.client.constructors.SERVERS. They are shut down when the Python interpreter exits.