🚥 Fast website monitoring backend service
Project description
🚥 Fast website monitoring backend service
Features
🍀 Feature-rich
- Websites to check & their results are stored in postgres by default 🐘 (the library is ready for other data stores / sockets).
- You can use postgres locally installed, running on docker, or with a DBaaS, e.g. Aiven.
- Run stored all websites once, at configurable-scheduled intervals, or even with your system's cron.
- The scheduling keeps running even if the computer goes to sleep!
- CLI API & Python's (Python >= 3.11).
- A webserver is planned.
- ...and more!
🚀 Speed
- All operations are asynchronous. This app sits on 3 giants:
- aiohttp
- psycopg (v3)
- APScheduler (v4)
- Written in Python 3.11 for maximum speed 🐍
- Speedy regex checking thanks to google-re2 regex. Note that google-re2 syntax is very similar to python's native
re
but not equal. In particular, backreferences are not supported, to gain on speed and safety. - No ORM libraries. Just good old (safely-escaped) SQL queries.
🧘 Safety
- Binary or too big responses will not be read.
- Safe regex thanks to google-re2 regex.
- Safe escaping of SQL queries with psycopg.
- Security static analysis with bandit, snyk, and GitHub CodeQL.
- Code is fully type-annotated and type-checked with mypy.
- Further type checking with Pydantic (v2).
- Further static analysis with pyflakes.
Install
With pip
# You need to run this with a Python 3.11 environment -- You can manage different python versions for instance with `pyenv`
pip install -U fastchecks
From source
You need to have python poetry installed. Then:
# clone this repository
_reponame="fastchecks";
_branch="main";
git clone -b "${_branch}" "https://github.com/juanmirocks/${_reponame}";
cd ${_reponame}
# Install project
poetry install
# Enter into the project's shell environment for simplicity with the running commands
poetry shell
Run
-
Create a postgres DB and take note of its postgres URL conninfo. NOTE: this app was tested with Postgres v15 only; some older versions should work too.
- For instance, if you have a local postgres installation:
_dbname="fastchecks"; createdb "${_dbname}" # Its postgres URL (assuming default user) will be: # postgres://localhost/fastchecks # Then you need to pass the conninfo to the CLI, # * either with the explicit optional parameter `--pg_conninfo`, or # * by setting the envar: `FC_POSTGRES_CONNINFO` # For simplicity, commands below assume you've set `FC_POSTGRES_CONNINFO`, e.g.: export FC_POSTGRES_CONNINFO='postgres://localhost/fastchecks'
-
Add some website URL checks info (to do check later)
fastchecks upsert_check 'https://example.org' # Add a simple URL check fastchecks upsert_check 'https://example.org' --regex 'Example D[a-z]+' # Update the URL check to match the response body with a regex fastchecks upsert_check 'https://python.org' --interval 5 # Add another URL check with a specific interval (in seconds)
-
Run the checks at the scheduled intervals in the foreground until stopped.
fastchecks check_all_loop_fg # checks without interval will run with a default (configurable by the envar: `FC_DEFAULT_CHECK_INTERVAL_SECONDS`)
-
That's it! You might want to explore further options:
- For all possibilities, run:
fastchecks -h
- For instance, might you want to run all checks only once (e.g. to schedule with cron), run:
fastchecks check_all_once
- Or run a single website check once (without registering it):
fastchecks check_website 'https://www.postgresql.org/'
- For all possibilities, run:
Copyright / License
Copyright 2023 Dr. Juan Miguel Cejuela
SPDX-License-Identifier: Apache-2.0
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
fastchecks-0.2.0.tar.gz
(24.4 kB
view hashes)
Built Distribution
fastchecks-0.2.0-py3-none-any.whl
(27.6 kB
view hashes)
Close
Hashes for fastchecks-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 78e1e745a5198f1d221d4123703638b20caa36f5b9b802aed96aa0ac9b6a6bf8 |
|
MD5 | 9799b359f85631d3dcb6034cf4fc11d5 |
|
BLAKE2b-256 | aecf111120aa63e5c4f1b39df3fd2bcf4a1b6b140cab164d0d4696af4d05d2e9 |