跳转到主要内容

Fedora通知的后端工作守护进程

项目描述

fmn 是一组用于管理由 fedmsg,Fedora FEDerated MESsage bus 触发的最终用户通知的系统。

此模块包含 Fedora 通知的后端工作守护进程。

有一个父级占位符存储库,其中包含一些您可能想要阅读的有用信息,例如一个 概述,一个简单的 架构图

开发

在此处找到开发说明:https://github.com/fedora-infra/fmn/#hacking

运行

项目部分有三个组件需要运行

  • fedmsg 消费者

  • 一个或多个工作进程

  • 后端

消费者是应用程序的一部分,它从 fedmsg 接收消息,然后将它们发送到工作进程(例如:要将通知发送给哪些人以及通过哪个渠道)。然后,工作进程将结果发送到后端,它接收这些结果并仅执行 I/O 操作:发送电子邮件、在 IRC 上发布等等。

要运行这些部分,只需简单地启动 rabbitmq-serverredis,然后在三个不同的终端中调用(所有终端都在相同的虚拟环境中运行)

$ fedmsg-hub
$ python fmn/consumer/worker.py
$ python fmn/consumer/backend.py

实用脚本

scripts/ 目录中有一个实用脚本,用于调试为什么某些用户收到了或没有收到消息。它需要一个用户名和一个 fedmsg msg_id,并尝试根据该用户的生成首选项查看这两个是否匹配。

架构

                                                     +-------------+
                                              Read   |             |   Write
                                              +------+  prefs DB   +<------+
                                              |      |             |       |
   +                                          |      +-------------+       |
   |                                          |                            |   +------------------+   +--------+
   |                                          |                            |   |    |fmn.lib|     |   |        |
   |                                          v                            |   |    +-------+     |<--+  User  |
   |                                    +----------+                       +---+                  |   |        |
   |                                    |   fmn.lib|                           |  Central WebApp  |   +--------+
   |                                    |          |                           +------------------+
   |                             +----->|  Worker  +--------+
   |                             |      |          |        |
fedmsg                           |      +----------+        |
   |                             |                          |
   |                             |      +----------+        |
   |   +------------------+      |      |   fmn.lib|        |       +--------------------+
   |   | fedmsg consumer  |      |      |          |        |       | Backend            |
   +-->|                  +------------>|  Worker  +--------------->|                    |
   |   |                  |      |      |          |        |       +-----+   +---+  +---+
   |   +------------------+      |      +----------+        |       |email|   |IRC|  |SSE|
   |                             |                          |       +--+--+---+-+-+--+-+-+
   |                             |      +----------+        |          |        |      |
   |                             |      |   fmn.lib|        |          |        |      |
   |                             |      |          |        |          |        |      |
   |                             +----->|  Worker  +--------+          |        |      |
   |                         RabbitMQ   |          |    RabbitMQ       |        |      |
   |                                    +----------+                   |        |      |
   |                                                                   v        v      v
   |
   |
   |
   v

常见问题解答

问:如果工作进程和后端抱怨

self.db[key] = value
TypeError: String or Integer object expected for key, unicode found

答:修改 fedmsg.d/fmn.py 的配置以使用 redis

# Some configuration for the rule processors
"fmn.rules.utils.use_pkgdb2": False,
"fmn.rules.utils.pkgdb2_api_url": "http://209.132.184.188/api/",
"fmn.rules.cache": {
    'backend': 'dogpile.cache.redis',
    'arguments': {
        'host': 'localhost',
        'port': 6379,
        'db': 0,
        'redis_expiration_time': 60*60*2,   # 2 hours
        'distributed_lock': True
    },
    # "backend": "dogpile.cache.dbm",
    # "expiration_time": 300,
    # "arguments": {
    #     "filename": "/var/tmp/fmn-cache.dbm",
    # },
},

问:当我运行工作进程和后端时,它们立即不断退出

答:您是否正在运行 rabbitmq-serverredis

systemctl status rabbitmq-server redis

如果没有,请运行

systemctl start rabbitmq-server redis

问:在运行 fedmsg-hub 时,输出显示一些内容未初始化

答:您已更新存储库并再次运行设置了吗?

git pull
workon fmn
python setup.py develop

问:我现在已运行 fedmsg-hubworker.pybackend,接下来怎么办?

答:加载网页界面并启用 IRC,并添加您的昵称。查看 fmn.webfmn 以获取更多信息。

问:它说我的昵称无效

答:您的昵称已注册吗?如果没有,请使用正确的信息运行此操作

/msg NickServ REGISTER password youremail@example.com

src: freenode

问:我如何知道它是否工作正常?

答:在 IRC 中,您应该会收到来自 threebot 的联系。

<threebot> <user>.id.fedoraproject.org has requested that notifications be sent to this nick
<threebot> * To accept, visit this address:

问:我如何进行压力测试?

答:待续。正在创建脚本。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。

源代码分发

fmn.consumer-1.0.3.tar.gz (52.5 kB 查看哈希值)

上传时间 源代码

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面