Skip to main content

mercury-py (Mercury for Python) is a Python based microservice that allow to manage scheduled notifications sending.

Project description

Mercury release

mercury-py logo

GitHub release (latest by date) PyPI PyPI - Status

PyPI - Python Version PyPI - Implementation

GitHub license

GitHub issues

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 distro, 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 distro, 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

Copy and paste file config-*.py, from folder configs, into folder mercury-instance and modify it according to your needs.

Configure the Secret Key

SECRET_KEY should be changed to some random bytes in production.

You can use the following command to output a random secret key:

$ python -c 'import os; print(os.urandom(16))'

Then place returned value into your config.py.

Starting Celery Worker Alternative

Source

You can also embed beat inside the worker by enabling the workers -B option, this is convenient if you’ll never run more than one worker node, but it’s not commonly used and for that reason isn’t recommended for production use:

celery -A mercury.app.celery worker -B --logfile=instance\logs\celery.log --pidfile=instance\celerybeat\celery.pid --schedule=instance\celerybeat\celery-schedule.db --loglevel=DEBUG

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:

celery -A mercury.app.celery worker --logfile=instance/logs/celeryworker.log --loglevel=DEBUG --pool=gevent
celery -A mercury.app.celery beat --logfile=instance/logs/celerybeat.log --loglevel=DEBUG --pidfile=instance/celerybeat/celerybeat.pid --schedule=instance/celerybeat/celerybeat-schedule.db

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

mercury-py-1.0.4.tar.gz (61.3 kB view details)

Uploaded Source

Built Distribution

mercury_py-1.0.4-py3-none-any.whl (69.0 kB view details)

Uploaded Python 3

File details

Details for the file mercury-py-1.0.4.tar.gz.

File metadata

  • Download URL: mercury-py-1.0.4.tar.gz
  • Upload date:
  • Size: 61.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.0

File hashes

Hashes for mercury-py-1.0.4.tar.gz
Algorithm Hash digest
SHA256 e7cc83fcb51c399715bfd6ea7be69aec46577f7c64aebbb405575dd201a3b607
MD5 e332d729244a12e6c4edb08f53a24aa3
BLAKE2b-256 a1b1b19dff165139cf95ad34a5a72a2f528f81acc058a2b7c9ce35c7f7e8839a

See more details on using hashes here.

File details

Details for the file mercury_py-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: mercury_py-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 69.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.0

File hashes

Hashes for mercury_py-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5755a23a0f0013792843fe296cc040a42b5ae620c68dcda9ae05c704e8dca9af
MD5 fa60d3083446f5eaf7bf503ebdfa801e
BLAKE2b-256 4ee41f552629a345a3033d6cfdbec6ba4cdb94fb5b5c51b861fc035ddab38c27

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