最近在研究子域名爆破 试用了 dnspython 这个第三方库
但是踩到了很多坑,程序算是能跑起来了,但是感觉速度不是十分理想
因为要做扫描的列表 于是使用了 multiprocessing.Manager 来管理进程之间的共享数据
但是 gevent 如果打了猴子补丁的话会有冲突,于是代码改成 monkey.patch_all(thread=False, socket=False, select=False) 但是跑起来速度很慢 那种慢看起来是 dns 查询的慢,想请问有没有什么优化方法啊

最近在研究子域名爆破 试用了 dnspython 这个第三方库
但是踩到了很多坑,程序算是能跑起来了,但是感觉速度不是十分理想
因为要做扫描的列表 于是使用了 multiprocessing.Manager 来管理进程之间的共享数据
但是 gevent 如果打了猴子补丁的话会有冲突,于是代码改成 monkey.patch_all(thread=False, socket=False, select=False) 但是跑起来速度很慢 那种慢看起来是 dns 查询的慢,想请问有没有什么优化方法啊
1 lfzyx Aug 22, 2018 用 asyncio 啊 |
2 Trim21 Aug 22, 2018 via Android asyncio aiodns |
4 matrace Aug 22, 2018 via iPhone 你把 socket 设置为 false,就相当于是多进程了 |
6 lolizeppelin Aug 22, 2018 via Android 抄 openstack 的多进城 service 启动部分代码 好好看看么写多进程代码的 |
7 bfpiaoran OP 我去抄一抄 |
8 panyanyany Aug 22, 2018 插句题外话,凡是涉及多进程 /多线程的,我都首先考虑 Golang …… |
9 lieh222 Aug 23, 2018 multiprocessing.Manager 貌似是通过 multiprocessing.pipe 实现的,原理跟 rpc 一样,性能缺失低,不如用 mmap 吧 |
10 whoami9894 Aug 23, 2018 这种网络 I/O 为主的,多线程就够用了吧 #9 manager 是本地 server 提供的共享,它可以在子进程间共享;不是通过 pipe,pipe 只能在父子进程间共享 |
11 bfpiaoran OP @whoami9894 刚试了下 asyncio 那速度是真的爽啊 。。。。 |