# coding: utf-8

from __future__ import unicode_literals


from SpiderFactory import SpiderFactory


import Queue
import threading


class BaseConsumer(threading.Thread):
    def __init__(self, q, cq, nq, name='BaseCon'):
        super(BaseConsumer, self).__init__()
        self.q = q
        self.cq = cq
        self.nq = nq
        self.name = name
        self.factory = SpiderFactory()

    def run(self):
        while True:
            try:
                resource = self.q.get(block=True, timeout=3)
                spider = self.factory.create_spider(resource)
                addr_list = spider.run()
                self.nq.put(len(addr_list), block=True, timeout=3)
                for addr in addr_list:
                    self.cq.put(addr, block=True, timeout=3)
                    # print addr
                self.q.task_done()
            except Queue.Empty:
                break
            except Exception, e:
                print e
                pass
        print '{0} finish consumer works'.format(self.name)


class SpiderConsumer(BaseConsumer):
    def __init__(self, q, cq, nq, name='SpiderCon'):
        super(SpiderConsumer, self).__init__(q, cq, nq, name)