**If** `cron` **and** `supervisor` **had a love child.**

-   Schedule and supervise jobs using internal Python modules, or external scripts and commands.
-   Schedule on-demand jobs to run once. Or run jobs from the command-line.
-   Configure and manage jobs from the command-line, via API, or using the web app UI.

**An experimental fork of [Wurkzen Wurker](https://gitlab.com/wurkzen/wurker/).**

![img](./docs/images/screenshot-1.png)


# Version

    0.1.16


# Documentation

Complete documentation is available in this repository:

-   **Documentation**: [Local Documentation](docs/README.md)
-   **Web Site**: [Wurker Docs on GitLab Pages](https://wurker-hatch-joseph8th-c60d52520b93f67b0292339f4314cef826907222.gitlab.io/)
-   **On GitLab**: [README.org](https://gitlab.com/joseph8th/wurker-hatch/-/blob/main/docs/README.org)


# Development

Starting at version `0.1.0`, Wurker development began to focus on PyPi packaging. To enable easier packaging for distribution, we began to use the [Hatch](https://hatch.pypa.io) project manager. Follow the following instructions to install `pipx` and `hatch` on your development environment:

-   Install [pipx](https://github.com/pypa/pipx)
-   Install [hatch](https://hatch.pypa.io/)

Next, install system dependencies, as documented in the full [Wurker Documentation](https://wurker-hatch-joseph8th-c60d52520b93f67b0292339f4314cef826907222.gitlab.io/).

After `hatch` and all system dependencies are successfully installed, `cd` into the `wurker-hatch` directory and do:

    hatch env create
    hatch shell


# History

Wurker grew organically over the course of a decade out of enterprise software for the digital cinema industry under R&D of [CIELO Enterprise Solutions, Inc](https://cieloconnects.com). Cinema systems are as secure as ATMs and protocols and standards may vary, but one thing is always true: **The show must go on!** That means a sometimes brutal production roadmap with millions at stake on any continent where there's a movie theater.

So&#x2026; not Antarctica?

It kinda **IS** rocket science to make a robust, reliable, on-time, off-line scheduler, that also supervises jobs and lets you run jobs on-demand. In the history DevOps, there are a multitude of solutions for similar problems.

This is (another) one of them.

The first incarnation of this project was stupid. It let you run interval jobs in either sub-processes or threads. That was disastrous. The next iteration just implemented `APScheduler` and had done. It was a good fit for the project.

The grandpappy of Wurker was a proprietary CIELO project called "Jobber", which at first was only a scheduler, but over the course of half a decade evolved to also replace the use of `cron` and `supervisor`. We had need of both facilities &#x2013; scheduled and supervised &#x2013; and it was a lot of work to maintain proper configuration and even harder to find out **what went wrong**. Jobber was a toy in comparison to Wurker, but it ran under heavy load for half a decade with lots of love from CIELO devops.

Wurker was developed by Joseph Edwards in his role as a founder of Wurkzen, Inc., which agreed to release the project under an MIT open-source license.

The current version, Wurker Hatchery, is a major upgrade focusing on PyPI packaging using the [Hatch](https://hatch.pypa.io) project manager. The repository has been moved to: [wurker-hatch on GitLab](https://gitlab.com/joseph8th/wurker-hatch)


# Authors

All of the people who have contributed code to Wurker Hatchery or Wurkzen Wurker:

-   Joseph Edwards VIII (maintainer)
-   Mehul Savaliya
-   Jose Sieres
-   Rick Cabrera


# License

Licensed under [MIT license](LICENSE.txt).

