def函数里面什么时候可以用ensure_future ?

语言: CN / TW / HK

摄影:产品经理

这个jiojio不好吃

一、问题解答

1

Python的虚拟环境其实就是把一部分内容独立出来,安装依赖包而不影响其它,有效地避免不兼容问题。如果是在虚拟环境下运行某病毒,它把我的某些东东删了,即使退出虚拟环境,删了就是删了,无法还原了。病毒的杀伤力大概率只能删文件,其余不构成影响。我这样理解,没错吧?

点击空白处查看答案

python的虚拟环境跟虚拟机不一样,它用的就是你电脑上的真实文件。它的原理就是python读取包的优先级顺序。你看我在星球分享的视频。

2

星主,我今天给群友分享个小发现 通过隧道代理实现selenium不重启切换ip :“Http隧道代码样例 - 文档中心 - 快代理”打开链接,耐心看就能找到。

点击空白处查看答案

这种方法有弊端。每个请求的ip都不一样。有时候我们需要让ip在一段时间内保持一致,按需更换。

3

群主,第2行代码太长了,参考你的《一日一技:在 Python 中小括号的另类用法》还是报错了,即使去掉后面的逗号,也是报同样的错。

import json

str1=('{"result":[{"cn":"256","displayName":"256 \u4e0a\u6d77(\u53c8\u4e00\u57ce)\u5e97","givenName":"\u5468\u751f\u751f\u4e0a\u6d77\u53c8\u4e00\u57ce\u5e97","telephoneNumber":["+86 21 6548 1910"]}]}')

str2=json.loads(str1)

print(str2)

点击空白处查看答案

每一行都应该有完整的引号。你每一行最右边的引号漏掉了

4

为什么import ctypes,如果文件名命名为ctypes会报错?

你知不知道Python的import倒入模块的功能可以用来做单例模式?一日一技:Python 下面最简单的单例模式写法

5

南哥,请教一个openvpn的问题,想把本地电脑和服务器组成局域网,在服务器上启动了一个 openvpn 服务,本地电脑作为 openvpn客户端进行连接。通过 vpn分配地址可以 ping 通服务器,但是通过该地址访问 服务器上服务时,可以看到有请求进入,无响应内容

点击空白处查看答案

不太清楚,但我感觉是客户端有问题

6

南哥,我在抓app包的时候,发现被tex标签包裹的数据是这样的:

[tex=2.571x1.286]32y9xwEcqsM9FjY9uB33CA==[/tex]

它在APP端显示的是图片,我起初以为是图片的base64,试了试似乎不对,然后尝试了几个在线的latex编辑网站,也不能像APP端那样展示图片。我的疑问:1.这是什么格式的数据?2.我如何做才能把这种数据像APP端一样展示出来呢(数据需要保存到word)?

完整数据如下:

content=[p]患者,男,32岁,持续发热1周,[tex=2.571x1.286]32y9xwEcqsM9FjY9uB33CA==[/tex]左右,[tex=1.786x1.286]KBJpRKfedxb3LzbS7tkLpQ==[/tex]次/分,表情淡漠、食欲不振、腹胀,肝大肋下5cm,轻度压痛,脾未触及。血常规[tex=7.5x1.286]zdOqpwhsJariPONWXQup3IZGzfokc79tD5vHTjyXU6s=[/tex],[tex=4.429x1.286]Lh5msTUDa+iu+cS3un+clw==[/tex],[tex=7.357x1.286]QkzMj4y6dti5TV28jS+zaZdGsIr/wo7j0jp5D+S1tSU=[/tex],肥达反应阳性。为进一步明确诊断,该患者首选的辅助检查为[u]   [/u]。[/p]

直接base64解码以后应该是一个id,app拿到这个id以后,拼接一个新的URL去拿公式图片。你在抓包工具里面全局搜索这个字符串。

二、经验交流

南哥,请问一下为什么我这个代码,只有第一个首页抓取成功,然后第二个url就不会爬取了,看输出结果爬取第二个链接直接在session.get就结束了没报错信息啥都没有。这是什么问题呢?

第34行返回的这个more_page可能是None,因为在第18行,在status_code不是200的时候你没有处理。

上面抓取网页那里,status_code不是200的时候,刚加了打印状态码。现在执行第二个url的时候,也没打印状态码出来就结束了。怀疑是session.get那里await出去就没有回来了

await会等待它回来再执行下一句的,你用pycharm开调试模式单步跟踪看看。另外可以把try … except去掉,乱用try是非常糟糕的习惯。

我刚刚debug跟踪看了,在执行第二个url爬取的时候,代码会执行到cancel协程那里去。感觉是协程写法不对?

46行,前面加个await,改成await asyncio.ensure_future

这样可以了,为什么需要在这里加await?

因为ensure_future是非阻塞的,代码在这一行不会停留,会继续运行后面的内容。但由于后面程序直接就结束了,所以他再也跑不完了。这个地方,其实你去掉ensure_future,直接await那个函数就可以了。

这个ensure_future,在def函数里面什么时候可以用,什么时候可以不用?对ensure_future的用法一直都不太清楚

我做的直播讲过它,在星球的历史记录里面可以找到。

未闻 Code·知识星球开放啦!

一对一答疑爬虫相关问题

职业生涯咨询

面试经验分享

每周直播分享

......

未闻 Code·知识星球期待与你相见~

一二线大厂在职员工

十多年码龄的编程老鸟

国内外高校在读学生

中小学刚刚入门的新人

“未闻 Code技术交流群” 等你来!

入群方式:添加微信“mekingname”,备注“粉丝群”(谢绝广告党,非诚勿扰!)