爬虫日记(108):Twisted:使用后悔药

Posted caimouse

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫日记(108):Twisted:使用后悔药相关的知识,希望对你有一定的参考价值。

有时候有一些操作发送出去了,但是不再需要做,这样就需要使用后悔药。比如前面的诗歌代理服务器,当一个客户端连接过来获取诗歌内容,但是由于服务器下载很慢,但是客户端等不起了,决定关闭连接,这时候连接服务器的异步代码调用还没有返回,所以阻塞在那里。这种情况下,代理服务器就要取消从服务器下载任何内容了,因为客户端已经不存在,即使下载也没有什么用了。此时此刻就是使用后悔药的好时候,在Twisted里就是使用Deferred的取消操作。

对于同步的代码,要取消比较困难,因为它是阻塞在那里,需要使用别的线程来触发。如下图:

 

同步调用时,调用的方向与取消的方向是一样的,由于阻塞所以没有办法操作。不过异步的代码就不一样了,它只是提前地编写了回调用函数往入到调用链,因此可以立即消息调用

以上是关于爬虫日记(108):Twisted:使用后悔药的主要内容,如果未能解决你的问题,请参考以下文章

爬虫日记(81):Twisted的线程池使用

爬虫日记(95):Twisted开发异步程序基础

爬虫日记(98):Twisted的使用回调更简单

爬虫日记(106):Twisted:单元测试怎么样编写

爬虫日记(100):Twisted:使用Deferred重构回调函数管理

爬虫日记(101):Twisted:使用Deferred重构异常代码