Skip to main content

Forward Datasette events to another instance

Project description

datasette-events-forward

PyPI Changelog Tests License

Forward Datasette events to another instance

Installation

Install this plugin in the same environment as Datasette.

datasette install datasette-events-forward

Configuration

Configure the plugin like so:

{
    "plugins": {
        "datasette-events-forward": {
            "api_token": "***",
            "api_url": "https://stats.datasette.cloud/data/-/create",
            "instance": "localhost"
        }
    }
}

The plugin will then gather all events and forward them to the specified instance, adding them to a table called datasette_events which will be created if it does not exist.

The instance key can be used to differentiate different instances that report to the same backend. Events are identified with a ULID to ensure they are unique even across different instances.

Events are forwarded in batches of up to 10, no more than once every 10 seconds.

Full list of configuration settings:

  • api_url: The write API URL of a Datasette instance to forward the events to.
  • api_token: The API token to use when sending events. Use {"$env": "FORWARD_TOKEN"} to read the token from the FORWARD_TOKEN environment variable.
  • instance: A string to identify the instance that is sending the events.

The api_url can be either a https://datasette.example.com/data/datasette_events/-/insert endpoint for inserting rows, or a https://datasette.example.com/data/-/create endpoint for creating a table and inserting rows into it. If the table does not yet exist you should use the /-/create variant, otherwise use the /-/insert variant.

If you use /-/insert your API token just needs insert-row permissions. For /-/create you will need create-table permissions as well.

And to control the rate at which batches of events are sent to the Datasette write API:

  • batch_limit: The number of events to send in each batch, defaults to 10. The Datasette write API has a 100 row limit by default so this should be set to a value less than that.
  • max_rate: The maximum number of deliver HTTP requests to send in the specified time period, defaults to 1.
  • time_period: The time period for the rate limiting in seconds, defaults to 10.

Development

To set up this plugin locally, first checkout the code. Then create a new virtual environment:

cd datasette-events-forward
python3 -m venv venv
source venv/bin/activate

Now install the dependencies and test dependencies:

pip install -e '.[test]'

To run the tests:

pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

datasette-events-forward-0.1a1.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

datasette_events_forward-0.1a1-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file datasette-events-forward-0.1a1.tar.gz.

File metadata

File hashes

Hashes for datasette-events-forward-0.1a1.tar.gz
Algorithm Hash digest
SHA256 c9baad19b113dc834ea5c8f0f4b6f6986e86ad0ace320b5c33711892316ed0a2
MD5 62b2936369e7dd251046ad5422d0e00b
BLAKE2b-256 d6ac7b151bd9c7d60f3da859483d2212cfc87e9703628e8ba8753b9489ae42f2

See more details on using hashes here.

File details

Details for the file datasette_events_forward-0.1a1-py3-none-any.whl.

File metadata

File hashes

Hashes for datasette_events_forward-0.1a1-py3-none-any.whl
Algorithm Hash digest
SHA256 a54f74bb2581a3038e8cafdac7a916438c9e511b9ac5f97d60d160601f24605f
MD5 6dad3ed006a76ec614e2ff5ea6c8a700
BLAKE2b-256 1a684a7215582afbe5b7744d6ad6dd3a3349efdb7a20a1f781acf849d6ec7496

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page