Skip to main content

Python task scheduler with a user-friendly web UI

Project description

Contributors Forks Stargazers Issues MIT License PyPI Version Maintainability


Plombery

Python task scheduler with a user-friendly web UI
Official website »

GitHub · Report Bug

About The Project

Plombery is a simple task scheduler for Python with a web UI and a REST API, if you need to run and monitor recurring python scripts then it's the right tool for you!

Plombery Screen Shot

This project is at its beginning, so it can be shaped and improved with your feedback and help! If you like it, star it 🌟! If you want a feature or find a bug, open an issue.

Features

  • ⏰ Task scheduling based on APScheduler (supports Interval, Cron and Date triggers)
  • 💻 Built-in Web interface, no HTML/JS/CSS coding required
  • 👩‍💻🐍 Pipelines and tasks are defined in pure Python
  • 🎛️ Pipelines can be parametrized via Pydantic
  • 👉 Pipelines can be run manually from the web UI
  • 🔐 Secured via OAuth2
  • 🔍 Debug each run exploring logs and output data
  • 📩 Monitor the pipelines and get alerted if something goes wrong
  • 💣 Use the REST API for advanced integrations

When you shouldn't use it:

  • you need a lot of scalability and you want to run on a distributed system
  • you want a no-code tool or you don't want to use Python

(back to top)

Built With

Python TypeScript React

(back to top)

🚀 Getting Started

Check the 👉 official website to get started with Plombery.

🎮 Try on GitHub Codespaces

Try Plombery with some demo pipelines on GitHub Codespaces:

Get Started on Codespaces

Codespaces are development environments that run in the cloud so you can run a project without cloning it, installing deps etc, here's an how to:

  • Go to the the lucafaggianelli/plombery GitHub page
  • Click on the green Code button on the top right
  • Choose the Codespaces tab
  • Click on create new codespace from main or reuse an existing one
  • A new page will open at github.dev, wait for the environment build
  • Once your codespace is ready you'll see an interface similar to VSCode
  • Some commands will be run in the terminal to build the frontend etc., wait for their completion
  • If everything went well, Plombery home page will be open in a new browser tab
  • Changes in the Python code will be immediately reflected in the web page, like if you were developing on your laptop

🧐 Show me the code

This is how it looks a minimalist pipeline:

Minimal code
I know you want to see it!

🛣 Roadmap

See the open issues for a full list of proposed features (and known issues).

(back to top)

👩‍💻 Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

Development

Clone a fork of this repo and start your dev environment.

Create a python virtual environment:

python -m venv .venv
# on Mac/Linux
source .venv/bin/activate
# on Win
.venv/Script/activate

and install the dependencies:

pip install ".[dev]"

for development purposes, it's useful to run the example application:

cd examples/

# Create a venv for the example app
python -m venv .venv
source .venv/bin/activate
pip install -r requirements

./run.sh
# or ./run.ps1 on windows

The React frontend is in the frontend/ folder, enter the folder and install the dependencies:

cd frontend/
# The project uses pnpm as dependency manager, if you don't have
# it, you must install it.
# This command will install the deps:
pnpm

run the development server:

pnpm dev

Documentation

The documentation website is based on MkDocs Material, the source code is in the docs/ folder and the config is in the mkdocs.yml file.

To run a local dev server, run:

mkdocs serve

Testing

Tests are based on pytest, to run the entire suite just run:

pytest

To run tests coverage, run:

coverage run -m pytest
coverage report -m

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Project Link: https://github.com/lucafaggianelli/plombery

(back to top)

Acknowledgments

Plombery is built on top of amazing techs:

(back to top)

Star History

Star History Chart

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

plombery-0.5.2.tar.gz (831.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

plombery-0.5.2-py3-none-any.whl (840.8 kB view details)

Uploaded Python 3

File details

Details for the file plombery-0.5.2.tar.gz.

File metadata

  • Download URL: plombery-0.5.2.tar.gz
  • Upload date:
  • Size: 831.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for plombery-0.5.2.tar.gz
Algorithm Hash digest
SHA256 68c4746c995ad18938b93d58f109f19ad6da65f3bcd6b1d76f23a95f149f89a0
MD5 8e2e6d88ef9579dacd7115ab140af7f0
BLAKE2b-256 fc339baa5db470b9c77c3181346ce3240db47d460c7dd1e9e38f965b95883729

See more details on using hashes here.

Provenance

The following attestation bundles were made for plombery-0.5.2.tar.gz:

Publisher: pypi-publish.yaml on lucafaggianelli/plombery

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file plombery-0.5.2-py3-none-any.whl.

File metadata

  • Download URL: plombery-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 840.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for plombery-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 59f7a75fdb686a9b5f18e8f13016be9758e53f5cb8e11bc7df4f0e794ece5f4b
MD5 512d6e5c7e0f4a886abdf1d5bbac710c
BLAKE2b-256 704b318c0058e3c5052d0c8dbf80615b1a53e7c558c377fd24aa9ab6ff852cbf

See more details on using hashes here.

Provenance

The following attestation bundles were made for plombery-0.5.2-py3-none-any.whl:

Publisher: pypi-publish.yaml on lucafaggianelli/plombery

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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