fedora消息总线(fedmsg)的存储使用者

datanommer的Python项目详细描述


我是datanommer。它只由一个fedmsg消费者组成,它将每个消息填充到 sqlalchemy数据库。

还有一些cli工具可以从数据库中转储信息。

生成状态

BranchStatus
masterBuild Status - master branch
developBuild Status - develop branch

试试看

使用virtualenv

强烈建议使用虚拟环境,尽管这不是必须的。使用virtualenvwrapper可以隔离开发环境。您将能够在git checkout中使用最新的datanommer,而不会在系统中弄乱已安装的datanommer副本。

安装virtualenvwrapper的方式:

$ sudo yum install python-virtualenvwrapper

注意:如果您决定不使用python virtualenvwrapper,则始终可以在fedora中使用fedmsg和datanommer的最新更新。如果要执行此操作,请忽略这些说明中的所有mkvirtualenv和workin命令。可以使用sudo yum install fedmsg安装fedmsg,使用sudo yum install datanommer安装datanommer。

开发依赖性

获取:

$ sudo yum install python-virtualenv openssl-devel zeromq-devel gcc

注意:如果提交修补程序,则应检查Contributing以获取样式准则。

设置virtualenv

创建一个新的空virtualenv并安装来自pypi的所有依赖项:

$ mkvirtualenv datanommer
(datanommer)$ cdvirtualenv

注意:如果mkvirtualenv命令不可用,请在fedora上尝试source /usr/bin/virtualenvwrapper.sh(如果不运行fedora,则可能需要稍微调整该命令)。您还可以将此命令添加到~/.bashrc文件中,使其自动为您运行。

在Git回购协议上游克隆

源代码在github上。

获取fedmsg:

(datanommer)$ git clone https://github.com/ralphbean/fedmsg.git

获取数据名:

(datanommer)$ git clone https://github.com/ralphbean/datanommer.git

设置fedmsg:

(datanommer)$ cd fedmsg

对于开发,请避免编辑主分支。签出开发分支:

(datanommer)$ git checkout develop
(datanommer)$ python setup.py develop

切换到datanommer:

(datanommer)$ cd ../datanommer

请注意,您应该按照以下顺序设置三个包:“datanommer.models”、“datanommer.commands”和“datanommer.consumer”。依次转到三个子文件夹并键入:

(datanommer)$ git checkout develop
(datanommer)$ python setup.py develop

创建datanommer数据库:

(datanommer)$ datanommer-create-db

试用datanommer

打开三个终端来尝试这些命令。在每一个中,使用以下命令激活virtualenv:

$ workon datanommer

在一个终端中,键入:

(datanommer)$ fedmsg-relay

在另一个中,键入:

(datanommer)$ fedmsg-hub

在第三种情况下,发出一条消息,该消息由中继接收、重新广播、由datanommer使用并插入datanommer.db:

(datanommer)$ echo "this is a test" | fedmsg-logger

试试命令。信息被储存了吗?:

(datanommer)$ datanommer-stats

loggerMessage应该有条目。:

(datanommer)$ datanommer-dump

检查数据库:

(datanommer)$ sqlite3 datanommer.db
> select* from messages;

您应该看到一行类似于:

1|1|org.fedoraproject.dev.logger.log|2012-11-30 23:33:12.077429|||{"log": "this is a test"}

使用alembic迁移

当数据库模型改变时,我们使用alembic来保留数据。Alembic位于以下型号中:

(datanommer)$ cd datanommer.models

要检查当前型号版本:

(datanommer)$ alembic current

如果您的模型是最新的,您应该看到:

INFO  [alembic.migration] Context impl SQLiteImpl.
INFO  [alembic.migration] Will assume transactional DDL.
Current revision for sqlite:///../datanommer.db: 198447250956 -> ae2801c4cd9 (head), add category column

如果结果是:

INFO  [alembic.migration] Context impl SQLiteImpl.
INFO  [alembic.migration] Will assume transactional DDL.
Current revision for sqlite:///../datanommer.db: None

然后使用以下命令迁移到最新版本:

(datanommer)$ alembic upgrade head

您应该看到:

INFO  [alembic.migration] Context impl SQLiteImpl.
INFO  [alembic.migration] Will assume transactional DDL.
INFO  [alembic.migration] Running upgrade None -> 198447250956
INFO  [alembic.migration] Running upgrade 198447250956 -> ae2801c4cd9

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java GridLayout超出了它的大小   java为什么SSHJ的最大写入大小是32KB?   部署后,java无法查看网站。war文件到tomcat   java如何使用gradle将javafx应用程序部署为可执行jar或exe?   java比较HashMap中的键和值   使用注入java和spring boot的RestTemplate类进行单元测试   java如何在eclipse中找到maven项目的原型?   java继承和实用程序方法及变量   java在Joptionpane中显示多行?   当location==null时,java会更改按钮的可见性   java为什么Google Drive getExportLinks返回空值?   java在使用自定义消息完成for循环后引发异常   curl如何使用docker运行undertow java应用程序