Datasette plugin providing the low_disk_space hook for other plugins to check for low disk space
Project description
datasette-low-disk-space-hook
Datasette plugin providing the low_disk_space hook for other plugins to check for low disk space
Highly experimental. Do not use this yet.
Installation
Install this plugin in the same environment as Datasette.
datasette install datasette-low-disk-space-hook
You are unlikely to need to install this plugin directly though: it will usually be automatically be installed as a dependency of another plugin.
Usage
This plugin adds a new plugin hook to Datasette called low_disk_space(datasette=datasette)
.
It also adds a new space_is_running_low(datasette)
utility function which can be called to check if the Datasette instance is running out of space:
from datasette_low_disk_space_hook import space_is_running_low
if await space_is_running_low(datasette):
print("Disk space is running low")
The idea is for plugins such as datasette-upload-csvs
and datasette-socrata
to call this hook before writing any new data into Datasette, to check if they should continue.
Other plugins can then implement the hook to warn when Datasette is running out of space.
Working together, this will help plugins avoid filling the disk entirely with data which could cause Datasette instances to crash.
Implementing the hook
An implementation of this hook (in yet another plugin) looks like this:
from datasette import hookimpl
import shutil
@hookimpl
def low_disk_space(self, datasette):
usage = shutil.disk_usage("/mnt")
# Fail at 95% or more used
if (usage.used / usage.total) > 0.95:
return True
The plugin can also return an async
function if it needs to use await
as part of its execution:
from datasette import hookimpl
from somewhere import check_disk_usage_percentage_async
@hookimpl
def low_disk_space(self, datasette):
async def inner():
usage = await check_disk_usage_percentage_async("/mnt")
if usage > 0.95:
return True
return inner
Development
To set up this plugin locally, first checkout the code. Then create a new virtual environment:
cd datasette-low-disk-space-hook
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for datasette-low-disk-space-hook-0.1a0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 44b5b6b29c7e977b546ff407542c1a996955a4dd97733bb546e3247bac414575 |
|
MD5 | ce6d792b9e0fdf56d0673430c3fee3bd |
|
BLAKE2b-256 | 292b10532a39ab25d21d06faf962ea7546679e2d4c8755133beb80ec60f57bcb |
Hashes for datasette_low_disk_space_hook-0.1a0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ea95bc198f1a2852d0dc3b6d2d83449f66596fa1eb23504e129d9f753c0bc67e |
|
MD5 | c9ecfe9fb9dc7f9f56da570569cbbdb3 |
|
BLAKE2b-256 | dd28ca3bd13181989925172f71255ba6f75d472a884d909dc9aeb8c1d490b709 |