mercury-py (Mercury for Python) is a Python based microservice that allow to manage scheduled notifications sending.
Project description
mercury-py
mercury-py (Mercury for Python) is a Python based microservice that allow to manage scheduled notifications' sending.
Introduction
The project consists of a Flask-based RESTful Web API, through which it is possible to manage the scheduling of notifications.
SQLite database is used internally.
MongoDB database is used to store scheduled notifications.
The dispatch of notifications is managed by Celery-based submodules:
- A Celery Beat that acts as an activator for the Workers.
- A Celery Worker for each category of notification, who takes care of managing the specific type of dispatch.
RabbitMQ message-broker is used for interprocess communications.
Notifications Categories
The categories of notifications that can currently be sent are:
- Email.
Categories will be implemented:
- SMS;
- Push notification - Firebase Cloud Messaging (FCM);
- Telegram message.
Setup instructions
Getting it
To download mercury, either fork this GitHub repo or simply download it from PyPI via pip:
pip install mercury-py
Install Dependencies
Mercury needs:
- MongoDB: get it from the official site (https://www.mongodb.com/) or from the official repository of your Linux disto, for example, on Debian-like systems:
sudo apt install mongodb
- RabbitMQ: get it from the official site (https://www.rabbitmq.com/) or from the official repository of your Linux disto, for example, on Debian-like systems:
sudo apt install rabbitmq-server
After that, to use Mercury, we need to create a RabbitMQ user, a virtual host and allow that user access to that virtual host:
From terminal, type (substitute in appropriate values for [MYUSER] and [MYPASSWORD] below):
sudo rabbitmqctl add_user [MYUSER] [MYPASSWORD]
sudo rabbitmqctl add_vhost mercury
sudo rabbitmqctl set_permissions -p mercury [MYUSER] ".*" ".*" ".*"
See the RabbitMQ Admin Guide for more information about access control (http://www.rabbitmq.com/admin-guide.html#access-control).
Setting up
Create a folder called Instance, copy and paste file config.py, from config-template, and modify it according to your needs.
Note: Windows Systems
On Windows systems, an additional dependency must be installed in order for Celery-based submodules to function properly.
Download and install Gevent from PyPI via pip:
pip install gevent
And run (Celery Beat and Celery Workers) from terminal:
beat --app=mercury.app.celery --logfile=instance/logs/celerybeat.log --loglevel=DEBUG --pidfile=instance/celerybeat/celerybeat.pid --schedule=instance/celerybeat/celerybeat-schedule.db
worker --app=mercury.app.celery --logfile=instance/logs/celeryworker.log --loglevel=DEBUG --pool=gevent
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
File details
Details for the file mercury-py-1.0.1.tar.gz
.
File metadata
- Download URL: mercury-py-1.0.1.tar.gz
- Upload date:
- Size: 42.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.8.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ebbcafc554373721c95c92413b5ad83b1d9fe83b87d822a6d23fc2a67916697d |
|
MD5 | fc6b44bc129ccd2ee24167a7a476a498 |
|
BLAKE2b-256 | e031f9a51c2da4a2d9110857ee391350f508678af174cee6f6b1b6a7613e3ca7 |