Metadata-Version: 2.0
Name: celerybeatmongo
Version: 0.1.2
Summary: A very simple Celery Beat Scheduler that stores status information in a MongoDB database.
Home-page: https://github.com/sm11963/celerybeatmongo
Author: Sam Miller
Author-email: sm11963@gmail.com
License: MIT
Keywords: celery beat scheduler mongo python
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Object Brokering
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Operating System :: OS Independent
Requires-Dist: celery
Requires-Dist: marshmallow
Requires-Dist: pymongo
Requires-Dist: python-dateutil
Requires-Dist: setuptools
Provides-Extra: test
Requires-Dist: pytest; extra == 'test'

# 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!


