关于分布式的比喻式理解,有助大家理解.不对的地方,还望谅解.不求完全正确,只求更加方便的理解
Topic sourcetask_master.py就是
* 注册
* 账户
* 密码,
* 进去设置昵称task和result
* 分配下载任务
* 下载完后注销账户
task_worker.py就是
* 获取账户
* 回答安全问题,就是ip
* 获取密码
* 登陆
* 设置昵称task和result
* 分配任务
- 1
task_master.py就是
* 注册
* 账户
* 密码,
* 进去设置昵称task和result
* 分配下载任务
* 下载完后注销账户
task_worker.py就是
* 获取账户
* 回答安全问题,就是ip
* 获取密码
* 登陆
* 设置昵称task和result
* 分配任务
JOIEUH
代码就是教程的,因为代码过长,我就直接截取,那些重要的讲
1.创建Queue的实例
2.为了让QueueManager拥有BaseManager这个父类的全部方法
3.这里可以理解问"注册迅雷帐号"(非广告,用迅雷作比喻方便后面讲解) 账户名:get_task_queue, 注册人(理解为实名认证,就是callable): task_queue
4.相当于迅雷的密码 特定的接口(理解为密码): 5000 authkey: 相当于验证码
5.链接网络(虽然不太恰当)
6.通过账户和密码登陆迅雷 manager,在前面的4中就是相当于密码 get_task_queue(),在前面3中相当于账号 所以,manager.get_task_queue(),就相当于通过账户和密码登陆迅雷
7.这里需要特别注明的,也是很重要的一点 为什么我们需要进行前面的2,3,4,5,6步呢? 就是为了,把Queue注册到网络上
原文的解析如下:
所以才需要进行2,3,4,5,6步,来把Queue注册到网络上.然后通过帐号和密码登陆之后才能访问到原始的task_queue
给迅雷添加下载链接,就是task.put(n)
8.这段为了最后打印出结果,没什么好解析的 那个timeout=10,我也不知道用来干嘛,懂得同学求解?
9.注销账号
10.为了让QueueManager拥有BaseManager这个父类的全部方法(同2)
11.大家都知道迅雷可以一个帐号,在两台设备上同时登陆吧.(这就是为什么要用迅雷做例子)
这里的QueueManager.register就可以理解为你的朋友分享他的帐号给你.
为什么没有,lambda: task_queue,因为是你朋友借帐号给你登陆,你不需要实名认证
文章解析: 由于这个QueueManager只从网络上获取Queue,所以注册时只提供名字
12.server_addr可以理解为帐号的安全问题. 因为是第二个设备登陆.所以需要回答安全问题. 只有回答对了答案才可以登陆,而这个答案就是Ip地址,也是本文中的,127.0.0.1
13.相当于,密码
为什么需要设置为同样的5000,和b'abc'
其实就是密码,你想想,前面11得到了你朋友的帐号 而他的密码是在之前,也就是4的时候设置好的
这就好比你有账号,那么是不是也需要正确密码才能成功登陆呢?
14.登陆
15.相当于凭借账户密码登陆.和前面6一样
而左边的task和result可以理解为账户昵称(ID)
16.这个没什么好解析的,其实就是前面章节的内容,看不懂的就要回去前面看看了.(咦...怎么好像在自己啊)
再求教,这个timeout=1,是干嘛的?
17.task_worker.py的第16,result.put(r),就在task_result.py中的8,打印出结果的