1
clino 2011-11-04 21:44:26 +08:00
"后来到网上查了一下发现 import 模块里边定义的变量的值是一直不会改变的。"这种还是用配置文件来做比较合适,例如用 ini (dict4ini) 或者 json 之类的.
"我如何实现一个高效率的checker,是使用线程,还是进程,还是异步。哪个比较好一点。" 要是我会选择进程,这样程序可以用同步的方式写,比较简单. |
2
fcicq 2011-11-04 22:07:23 +08:00
1 对于默认 socket, 没有 gevent / stackless python 这类的修改, 就全部是阻塞的.
tornado / twisted 是自己实现了一套, 没有暴露原始的 socket. 2 你不理解 DNS. DNS 的结果会被缓存比较长的一段时间, 不要以为 DNS 上不返回失效的 IP, 就不会有人访问了. 用这个做负载均衡虽说是可以的, 但不要把 checker 和 DNS 联系到一起. 高可用的正常做法是 LVS 或者硬件负载均衡器, 而不是你山寨的玩意. |
3
CMGS 2011-11-04 22:16:57 +08:00
@fcicq 2.6+之后python 在select包里面提供了epoll等,理论上不跨平台还是能写出原生non-blocking。。tornado的回调太让人菊花疼了。。
|
5
elden 2011-11-04 22:55:55 +08:00
判断阻塞/非阻塞,可以分别写一个简单的listener(server)和client,一方向另一方写小量数据,如果另一方没读就直接返回,那么就说明是非阻塞的。
|