Skip to content

Instantly share code, notes, and snippets.

@nyov
Created January 30, 2014 21:32
Show Gist options
  • Save nyov/8720340 to your computer and use it in GitHub Desktop.
Save nyov/8720340 to your computer and use it in GitHub Desktop.
def __init__(self, *args, **kwargs):
super(Spider, self).__init__(*args, **kwargs)
dispatcher.connect(self.spider_idle, signal=signals.spider_idle)
logout_done = False
def spider_idle(self, spider):
if spider != self: return
if self.logout_done: return
self.crawler.engine.schedule(self.logout(), spider)
raise DontCloseSpider('Session logout proceeding')
def logout(self, response=None):
if response and response.meta['logout_sent']:
# verify logout?
if 'Logged out' in response.body:
self.log('Logout successful.', level=log.INFO)
return
self.log('Closing down with logout...', level=log.INFO)
self.logout_done = True # dont care if this request succeeds
request = Request(url=self.logout_url, callback=self.logout)
request.meta['logout_sent'] = True
return request
@shoelzle
Copy link

links are dead

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment