Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from time import strftime
- from twisted.internet import reactor
- from twisted.internet.defer import Deferred, DeferredList
- from twisted.internet.protocol import Protocol
- from twisted.web.client import Agent, HTTPConnectionPool
- from twisted.web.http_headers import Headers
- from twisted.internet.error import AlreadyCalled, AlreadyCancelled
- class BeginningPrinter(Protocol):
- def __init__(self,handler):
- self.handler=handler
- def dataReceived(self, received):
- handler(received)
- def connectionLost(self, reason):
- pass
- class Site():
- def __init__(self,url,rest,wait,pool,md5=None,ind=None,name=None):
- self.url=url
- self.rest=rest
- self.wait=wait
- self.pool=pool
- self.md5=md5
- self.ind=ind if ind else 0
- self.name=name if name else self.url
- self.last_success=0
- self.last_received=0
- self.agent = Agent(reactor, pool=pool)
- self.deferred=None
- self.delayedCall=None
- def __request(self):
- self.deferred = self.agent.request(
- 'GET',
- self.url,
- Headers({'User-Agent': ['Mozilla/5.0']})
- )
- def again(self):
- print strftime('%X'),'again'
- try:
- self.deferred.cancel()
- except (AlreadyCalled, AlreadyCancelled) :
- pass
- try:
- self.delayedCall.reset(self.wait)
- except (AlreadyCalled, AlreadyCancelled) :
- self.delayedCall = reactor.callLater(self.wait, self.timeIsOff)
- self.__request()
- self.deferred.addCallback(self.gotRequest)
- def timeIsOff(self):
- print strftime('%X'),'time is off'
- self.again()
- def handleReceived(self, received):
- print strftime('%X'),'received: ',received
- def gotRequest(self, response):
- print strftime('%X'),'gotRequest'
- self.again()
- print 'Response code:', response.code
- response.deliverBody(BeginningPrinter(self.handleReceived))
- def startLive(self):
- print strftime('%X'),'startLive'
- self.__request()
- self.deferred.addCallback(self.gotRequest)
- self.delayedCall = reactor.callLater(self.wait, self.timeIsOff)
- pool = HTTPConnectionPool(reactor)
- site1 = Site(url='http://wool/cgi-bin/wait.cgi',rest=3,wait=2,pool=pool)
- site1.startLive()
- reactor.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement