使用ANTLR做一个简单的Python SQL语法解析器

最近在做一个数据库相关的平台(按照潮流现在平台应该叫做SAAS平台。。。),对于数据库相关的平台来说,SQL的语法分析就比较重要了,不管是从格式化SQL,还是分析SQL所涉及到的表、列来做安全审计,或者是自助SQL的提交所涉及到的语法检查及内部规范要求,都需要用到语法分析。 Continue reading

多进程socket共用

最近遇到一个需求:我的程序需要接收某个节点传来的UDP报文(来自sFlow),然后对报文进行纯CPU密集型的分析。在某些时候UDP报文的数量可能会很大,另外为了分析结果的准确我不希望太多的丢包。本来是想用threading直接通过Queue来个生产者消费者模式的,但由于是CPU密集型的分析工作所以对于Python来说这样效率不会有多少提高。因此考虑多进程。 Continue reading

Python能否实现超时,以及一些关于线程知识的复习

最近在试着写一个简单的分布式数据库(主要是受了OceanBase的影响),其中日志系统打算基于Raft来写。Raft的算法中有很多场景是需要基于超时来实现的,比如选举超时、心跳维护超时等,因此自然就想试着写一个通用的超时模块。这篇文章就来说说小秦在实现超时时候遇到的困难以及一些感想。(注意,Raft的超时可以通过socket.settimeout来设置,这里讨论的超时只的是针对一般方法的超时) Continue reading

使用mock模块来帮助python测试

相比较于unittest,nose这类测试类库,mock给我的感觉是完全不一样的。刚开始看mock是因为openstack中的测试用到了它,翻阅其文档时候完全不清楚他是干嘛的。直到看到了 http://www.oschina.net/translate/unit-testing-with-the-python-mock-class 这篇文章,才发现mock可以解决我很多实际的问题。这里小秦就记录下mock的实际使用场景的一个例子,方便和我之前有同样疑问的人能快速的理解其价值。 Continue reading