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

Posted caimouse

tags:

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

为了尽快熟悉scrapy的代码,先来抽取里面的一个循环调度的类出来测试一下,这个类实现对回调函数的封装。整个例子的代码如下:

#爬虫日记-蔡军生(qq:9073204)

#https://mysoft.blog.csdn.net/

#2021-05-24



from twisted.internet import task

from twisted.internet import reactor

from twisted.internet import defer



class CallLaterOnce:

    """Schedule a function to be called in the next reactor loop, but only if

    it hasn\'t been already scheduled since the last time it ran.

    """



    def __init__(self, func, *a, **kw):

        self._func = func

        self._a = a

        self._kw = kw

        self._call = None



    def schedule(self, delay=0):

        from twisted.internet import reactor

        if self._call is None:

            self._call = reactor.callLater(delay, self)



    def cancel(self):

        if self._call:

            self._call.cancel()



    def __call__(self):

        sel

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

爬虫日记(93):Twisted的设计模型

爬虫日记(79):Twisted的延时机制

爬虫日记(94):Twisted的reactor设计来源

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

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

爬虫日记(102):Twisted:使用Deferred重构服务器代码