首页   注册   登录
 walkinrain 最近的时间轴更新

walkinrain

V2EX 第 293520 号会员,加入于 2018-02-23 15:52:38 +08:00
walkinrain 最近回复了
异步学习阶段,基本上用的都是标准库。
python 3.7
用的是标准库 asyncore
WhoisClient 继承于 asyncore.dispatcher.

class WhoisClient(asyncore.dispatcher):
def __init__(self, q_in, q_out):

q_in 为需要查询的 ip 队列。
q_out 为查询到的结果队列。

通过 conn_count 设置最大连接数(同时连接查询网站的连接数)
主代码就在一楼,也很简单,打开一个文件,每行一条数据读出,压入 q_in 队列。创建 WhoisClient 实例。WhoisClient 异步执行,结果压入 q_out 队列。

代码本意,超过 conn_count 个链接,等待运行完毕 1 个 WhoisClient,继续创建新的 WhoisClient。

本意以为 loop 会循环至 1 个 whoisclient 完成,实际 count=1 并未阻塞。
将 1 楼的 if 换成 while 代码达到预期。

===================================
主要是想大神帮我分析分析 asyncore 中 asyncore.loop 函数具体实现原理与规则。我看了 asyncore.py ,中间 loop 代码段,感觉应该阻塞住到 1 个 whoisclient 完成的啊。
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1166 人在线   最高记录 4019   ·  
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 10ms · UTC 17:31 · PVG 01:31 · LAX 09:31 · JFK 12:31
♥ Do have faith in what you're doing.
沪ICP备16043287号-1