fcm-notifier


Namefcm-notifier JSON
Version 0.2.3 PyPI version JSON
download
home_page
SummaryСервис отправки push-уведомлений через FCM
upload_time2024-02-05 09:08:47
maintainer
docs_urlNone
authorBARS Group
requires_python>=3.7
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Сервис по отправке push-уведомлений через Firebase Cloud Messaging

## Общее описание

fcm-notifier представляет собой сервис, который отдельно запускается в окружении РИС и с заданной 
периодичностью забирает накопившиеся сообщения из очереди, которые пачкой (до 500 штук) отправляет 
на мобильные устройства через FCM backend используя Firebase Admin SDK.

![](img/fcm-notifier-scheme.png)

## Настройка сервиса

Для работы сервиса необходимо в переменных окружения задать две переменные:

Путь до JSON-файла содержащего приватный ключ для доступа к сервисам Google:

    export GOOGLE_APPLICATION_CREDENTIALS=/opt/bars/fcm-notifier/mydiary.json

Путь до директории содержащей файл конфигурации сервиса:

    export FCM_NOTIFIER_CONFIG_DIR=/opt/bars/fcm-notifier/

Файл конфигурации fcm_notifier.conf:

```ini
[redis]
REDIS_HOST = 127.0.0.1
REDIS_PORT = 6379
REDIS_DB = 12
REDIS_PASSWORD =

[logging]
LEVEL = INFO
```

## Запуск сервиса

    $ fcm-notifier worker

## Использование очереди сообщений в РИС

Добавление сообщения в очередь:
```python
from fcm_notifier.helpers import get_redis_connection
from fcm_notifier.notification import Notification, NotificationPayload
from fcm_notifier.queue import RedisQueue


queue = RedisQueue(connection=get_redis_connection())

notification = Notification(
    payload=NotificationPayload(
        title='Test message!',
        body='Message body',
    ),
    token='dsufZwUdSFaeIGFt77aMwm:APA91bHQje7R...',
)

queue.enqueue_notification(notification)
```

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "fcm-notifier",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "",
    "keywords": "",
    "author": "BARS Group",
    "author_email": "education_dev@bars-open.ru",
    "download_url": "https://files.pythonhosted.org/packages/c5/5a/a48e4863580ebaf313fbf180ffc12ec81a72e0343f4de642869758c4e91e/fcm-notifier-0.2.3.tar.gz",
    "platform": null,
    "description": "# \u0421\u0435\u0440\u0432\u0438\u0441 \u043f\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 push-\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 Firebase Cloud Messaging\n\n## \u041e\u0431\u0449\u0435\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\n\nfcm-notifier \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438 \u0420\u0418\u0421 \u0438 \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \n\u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u043d\u0430\u043a\u043e\u043f\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0430\u0447\u043a\u043e\u0439 (\u0434\u043e 500 \u0448\u0442\u0443\u043a) \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \n\u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0447\u0435\u0440\u0435\u0437 FCM backend \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Firebase Admin SDK.\n\n![](img/fcm-notifier-scheme.png)\n\n## \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\n\n\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0442\u044c \u0434\u0432\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435:\n\n\u041f\u0443\u0442\u044c \u0434\u043e JSON-\u0444\u0430\u0439\u043b\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0433\u043e \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c Google:\n\n    export GOOGLE_APPLICATION_CREDENTIALS=/opt/bars/fcm-notifier/mydiary.json\n\n\u041f\u0443\u0442\u044c \u0434\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430:\n\n    export FCM_NOTIFIER_CONFIG_DIR=/opt/bars/fcm-notifier/\n\n\u0424\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 fcm_notifier.conf:\n\n```ini\n[redis]\nREDIS_HOST = 127.0.0.1\nREDIS_PORT = 6379\nREDIS_DB = 12\nREDIS_PASSWORD =\n\n[logging]\nLEVEL = INFO\n```\n\n## \u0417\u0430\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0432\u0438\u0441\u0430\n\n    $ fcm-notifier worker\n\n## \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u0420\u0418\u0421\n\n\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c:\n```python\nfrom fcm_notifier.helpers import get_redis_connection\nfrom fcm_notifier.notification import Notification, NotificationPayload\nfrom fcm_notifier.queue import RedisQueue\n\n\nqueue = RedisQueue(connection=get_redis_connection())\n\nnotification = Notification(\n    payload=NotificationPayload(\n        title='Test message!',\n        body='Message body',\n    ),\n    token='dsufZwUdSFaeIGFt77aMwm:APA91bHQje7R...',\n)\n\nqueue.enqueue_notification(notification)\n```\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "\u0421\u0435\u0440\u0432\u0438\u0441 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 push-\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 FCM",
    "version": "0.2.3",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "45ec70902ca404d94eadf17922dd6e80abb959e77548b093fdf52b761cbca4bc",
                "md5": "bf599495bbefa17f2c86ec208ca110df",
                "sha256": "6c20bc74685acf791bbb29e2eb8fcdcb70f9bbbdf9551ed3790f0410900be589"
            },
            "downloads": -1,
            "filename": "fcm_notifier-0.2.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "bf599495bbefa17f2c86ec208ca110df",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 16769,
            "upload_time": "2024-02-05T09:08:46",
            "upload_time_iso_8601": "2024-02-05T09:08:46.511840Z",
            "url": "https://files.pythonhosted.org/packages/45/ec/70902ca404d94eadf17922dd6e80abb959e77548b093fdf52b761cbca4bc/fcm_notifier-0.2.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c55aa48e4863580ebaf313fbf180ffc12ec81a72e0343f4de642869758c4e91e",
                "md5": "e28d2773774ddb05173af660e2d3560e",
                "sha256": "ad72b1e4349dd380d7495747db3dc7bd810aeb22156d72d1567bc5fbaf47bc98"
            },
            "downloads": -1,
            "filename": "fcm-notifier-0.2.3.tar.gz",
            "has_sig": false,
            "md5_digest": "e28d2773774ddb05173af660e2d3560e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 13882,
            "upload_time": "2024-02-05T09:08:47",
            "upload_time_iso_8601": "2024-02-05T09:08:47.769076Z",
            "url": "https://files.pythonhosted.org/packages/c5/5a/a48e4863580ebaf313fbf180ffc12ec81a72e0343f4de642869758c4e91e/fcm-notifier-0.2.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-05 09:08:47",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "fcm-notifier"
}
        
Elapsed time: 0.16120s