Maintenance Mode¶
Sometimes, it can be useful to deactivate your fietsboek instance temporarily, for example when you want to apply updates, or you need to otherwise fiddle with the data. Deactivating your instance avoids any “race issues” or accesses to the database and such, which might be in inconsistent states.
To help with this situation, fietsboek provides a maintenance mode. This allows you to deactivate fietsboek without having to change with your webserver settings.
In the maintenance mode, fietsboek will reply to any HTTP request with a 503
Service Unavailable
response, and won’t process the requests further.
Note
The maintenance mode is implemented early in fietsboek, however if you have custom HTTP proxies, caches or other WSGI middleware between fietsboek and the outside world, the maintenance mode will not affect those.
In those cases, it might be better to deactivate the whole pipeline, depending on the setup and the middleware used — at least if those also access the database.
In addition to not replying to HTTP requests, fietscron
will also respect
the maintenance mode and do nothing. This is to avoid accidental interference
with long tasks like updating, such that a badly-timed cronjob doesn’t access
data in an invalid state.
Unlike fietscron
and the web interface, fietsctl
and fietsupdate
will continue to work.
Controlling the Maintenance Mode¶
You can enable and disable the maintenance mode using the fietsctl
script.
To enable maintenance, simply pass a reason (that will be shown to users) to
fietsctl maintenance-mode
:
fietsctl -c production.ini maintenance-mode "Updating the instance"
Similarly, you can disable the maintenance mode by passing the --disable
flag:
fietsctl -c production.ini maintenance-mode --disable
To check the current status of the maintenance mode, call the subcommand without extra arguments:
fietsctl -c production.ini maintenance-mode
Manually Intervening with Maintenance¶
If you cannot (or don’t want to) use the fietsctl maintenance-mode
command,
you can also manually control the maintenance mode: The MAINTENANCE
file in the data directory controls whether the mode is enabled or disabled.
To enable the maintenance mode, it is enough to ensure that the file exists:
touch data-dir/MAINTENANCE
The reason for the maintenance mode is saved in the file content:
echo "Updating the instance" > data-dir/MAINTENANCE
To disable the maintenance mode, remove the file again:
rm data-dir/MAINTENANCE