clubot更新: 使用SQLAlchemy重写数据库部分和改用Tornado MainLoop

Fri 26 April 2013

clubot在我的vps上跑了有一段时间了, 最近接触了SQLAlchemy 然后反观clubot的数据库代码部分, 感觉代码又遭有乱实在看不过眼, 所以就使用SQLAlchemy重写了数据库模块, 并将epoll的MainLoop改成仙子君所写的TornadoMainLoop

更新内容

  1. 数据库使用SQLAlchemy重写
  2. MainLoop改用TornadoMainLoop
  3. 改变代码结构, 清理部分代码
  4. history命令改为old, 并支持时间查询
  5. 废弃一些不常用的命令
  6. 改变数据库表结构
  7. 废弃channel功能, cd命令仅支持切换聊天和安静模式
  8. 删除一些不用的配置

如何升级

数据库表结构做了更改, 所以为了兼容之前的数据库本次表名前加上clubot_前缀, 并配以update.py脚本用以支持将旧的数据导入.

新的依赖

本次更新添加了依赖, 现在依赖包括:

  • pyxmpp2
  • dnspython
  • tornado
  • sqlalchemy
  • MySQL-python

乱码

如果数据导入后乱码, 可以参考这篇文章

项目地址

最后放上项目地址

Category: Python Tagged: clubot pyxmpp2 gtalk xmpp 更新 重写 SQLAlchemy tornado

comments


使用更加高效的epoll作为pyxmpp2的主循环

Tue 05 February 2013

引子

之前clubot使用的pyxmpp2的默认mainloop也就是一个poll的主循环,但是clubot上线后资源占用非常厉害,使用strace跟踪发现clubot在不停的poll,查看pyxmpp2代码发现pyxmpp2poll在使用超时阻塞时使用最小超时时间,而最小超时时间一直是0,所以会变成一个没有超时的非阻塞poll很浪费资源,不打算更改库代码,所以自己仿照poll的mainloop写了一个更加高效的epoll的mainloop

实现

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#
#   Author  :   cold
#   E-mail  :   wh_linux@126.com
#   Date    :   13/01/06 10 …

Category: Python Tagged: epoll python gtalk Linux clubot

comments

Read More

python 使用pyxmpp2编写gtalk群

Mon 29 October 2012

gtalk是一款google开发的基于xmpp协议的聊天软件,其优点就是协议开源,我们可以通过任何支持xmpp的客户端协议来链接gtalk,但是gtalk不支持群聊天,所以各路高手都会自己来开发一个机器人来支持群功能.

其实主要原理就是机器人接收到消息后再将消息广播出去,从而达到群的效果.

python有两个模块可以用来支持xmpp,分别是pyxmpp和pyxmpp2,之前也用pyxmpp写了一个,功能和兼容性不是很好,经常出现问题,所以又使用pyxmpp2重写了一遍,今天修复了一些bug,所以公布出来,大家可以下载测试,也可以加入我们使用gtalk进行群交流,

我们的gtalk机器人是:clubot@vim-cn.com

喜欢gtalk,同时喜欢Linux/Python/Vim等爱好者的同学可以加进来交流

如果对我们的代码比较感兴趣,可以访问github,我们将代码放在了github上:https://github.com/coldnight/clubot

下面介绍一下安装:

环境为:python 2.7, 因为有少量的shell所以系统需要Linux,也可稍作更改支持windows

下载源码:

git clone git://github.com/coldnight/clubot.git

安装依赖 …

Category: Python Tagged: xmpp pyxmpp2 python gtalk bot

comments

Read More
Page 1 of 1

Fork me on GitHub