Skip to main content

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!


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

celerybeatmongo-0.1.2.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

celerybeatmongo-0.1.2-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file celerybeatmongo-0.1.2.tar.gz.

File metadata

File hashes

Hashes for celerybeatmongo-0.1.2.tar.gz
Algorithm Hash digest
SHA256 bb8bd09c208d9cff4a27f09a79fdeecdf09d4fc0cdd885155137715d9b22e765
MD5 9bb743e1ef2732cb810520112c43f932
BLAKE2b-256 a51775160346bbbd08639bd84df997a5f32c1f48a453cefa6191fdef15e42642

See more details on using hashes here.

File details

Details for the file celerybeatmongo-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for celerybeatmongo-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b93ff8ca0560c350ba9e0355ca7f76108edad6f1db3c00079f6b6c1e01f17d4f
MD5 b1571e716d4272300d323033b97cf32e
BLAKE2b-256 e47a7b1952942b345b23f293d18b72df8619fb87373cfda1532227de0424596e

See more details on using hashes here.

Supported by

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