A very simple Celery Beat Scheduler that stores status information in a MongoDB database.
Project description
# celerybeatmongo
A very simple Celery Beat Scheduler that stores status information in a MongoDB database.
# Install
```
pip install celerybeatmongo
```
# Details
This project provides a Celery Beat Scheduler that uses MongoDB to store the schedule stats (last run, run count, etc.). This is safer than using a file on your server which could be cleared or corrupted (on Heroku for example). This scheduler aims to replace the default Beat Scheduler provided with Celery. There are a few caveats though:
* Only supports interval scheduling (currently, easy to add support for Crontab and Solar)
* Can only pass native JSON types (dict, list, str, number) to `kwargs`, `args`, and `options` for tasks
## Motivation
I started this project because I run Celerybeat on Heroku and I started noticing that tasks were being dropped. This was because the default Celerybeat Scheduler (`[celery.beat.PersistentScheduler](http://docs.celeryproject.org/en/latest/reference/celery.beat.html#celery.beat.PersistentScheduler)`) uses a shelve database file that it adds the current directory. In Heroku this file was cleared and so the schedule data was not saved reliably. With the `celerybeatmongo.MongoPersistentScheduler` this is not an issue anymore.
# Example
Please see `examples/celery_worker.py` for a simple example to just try it out.
Running the example requires MongoDB and Redis (you can edit it to use another Broker instead if Redis if you want).
* [Install Redis](https://redis.io/topics/quickstart)
* [Install MongoDB](https://docs.mongodb.com/manual/installation/)
You can run the following to start the example:
1. In a seperate terminal window, start Redis:
```shell
$ redis-server # start redis
```
2. In a seperate terminal window, start MongoDB:
```shell
$ mongod
```
3. Then start the example worker:
```shell
$ pip install redis
$ python examples/celery_worker.py
```
# Contribute
Please add issues or put up pull requests if you need more functionality or have suggestions. Its a new project and should be easy to contribute to!
A very simple Celery Beat Scheduler that stores status information in a MongoDB database.
# Install
```
pip install celerybeatmongo
```
# Details
This project provides a Celery Beat Scheduler that uses MongoDB to store the schedule stats (last run, run count, etc.). This is safer than using a file on your server which could be cleared or corrupted (on Heroku for example). This scheduler aims to replace the default Beat Scheduler provided with Celery. There are a few caveats though:
* Only supports interval scheduling (currently, easy to add support for Crontab and Solar)
* Can only pass native JSON types (dict, list, str, number) to `kwargs`, `args`, and `options` for tasks
## Motivation
I started this project because I run Celerybeat on Heroku and I started noticing that tasks were being dropped. This was because the default Celerybeat Scheduler (`[celery.beat.PersistentScheduler](http://docs.celeryproject.org/en/latest/reference/celery.beat.html#celery.beat.PersistentScheduler)`) uses a shelve database file that it adds the current directory. In Heroku this file was cleared and so the schedule data was not saved reliably. With the `celerybeatmongo.MongoPersistentScheduler` this is not an issue anymore.
# Example
Please see `examples/celery_worker.py` for a simple example to just try it out.
Running the example requires MongoDB and Redis (you can edit it to use another Broker instead if Redis if you want).
* [Install Redis](https://redis.io/topics/quickstart)
* [Install MongoDB](https://docs.mongodb.com/manual/installation/)
You can run the following to start the example:
1. In a seperate terminal window, start Redis:
```shell
$ redis-server # start redis
```
2. In a seperate terminal window, start MongoDB:
```shell
$ mongod
```
3. Then start the example worker:
```shell
$ pip install redis
$ python examples/celery_worker.py
```
# Contribute
Please add issues or put up pull requests if you need more functionality or have suggestions. Its a new project and should be easy to contribute to!
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
celerybeatmongo-0.1.2.tar.gz
(5.3 kB
view details)
Built Distribution
File details
Details for the file celerybeatmongo-0.1.2.tar.gz
.
File metadata
- Download URL: celerybeatmongo-0.1.2.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bb8bd09c208d9cff4a27f09a79fdeecdf09d4fc0cdd885155137715d9b22e765 |
|
MD5 | 9bb743e1ef2732cb810520112c43f932 |
|
BLAKE2b-256 | a51775160346bbbd08639bd84df997a5f32c1f48a453cefa6191fdef15e42642 |
File details
Details for the file celerybeatmongo-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: celerybeatmongo-0.1.2-py3-none-any.whl
- Upload date:
- Size: 7.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b93ff8ca0560c350ba9e0355ca7f76108edad6f1db3c00079f6b6c1e01f17d4f |
|
MD5 | b1571e716d4272300d323033b97cf32e |
|
BLAKE2b-256 | e47a7b1952942b345b23f293d18b72df8619fb87373cfda1532227de0424596e |