# Path: celeryapp/celery.py
# def save_state(sender=None, conf=None, **kwargs):
# def get_message_queue_size(queue_name):
# IP = re.compile(r'\d{1,3}(?:\.\d{1,3}){3}(?::\d{1,6})?')
# 
# Path: celeryapp/celery.py
# def get_message_queue_size(queue_name):
#     client = redis.Redis(IP.findall(config.broker)[0])
#     length = client.llen(queue_name)
#     return length


from celeryapp.celery import app
from celeryapp.celery import get_message_queue_size
from celery import group
from celery.exceptions import Retry
import datetime
import config
import celeryconfig
            app.tasks[self.crawler_name + '.schedule'].apply_async((new_tasks, ), compression='zlib')
        #return parse_result
        #return self.handler.handle(dict_item, **kwargs)
    # -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.

    # -.-.-.-.-.-.-.-.-.-.-.-.-.-..parse_priority task-.-.-.-.-.-.-.-.-.
    @app.task(name=crawler.get('name')+'.parse_priority',
              bind=True,
              handler=crawler.get('parseHandler'), 
              crawler_name=crawler.get('name'),
              ignore_result=True)
    # fake task
    def parse_priority(self, dict_item, **kwargs):
        parse_result, new_tasks = self.handler.handle(dict_item, **kwargs)
        if parse_result:
            app.tasks[self.crawler_name + '.pipeline'].delay(parse_result)
        if new_tasks:
            app.tasks[self.crawler_name + '.schedule'](new_tasks)
    # -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.

    # -.-.-.-.-.-.-.-.-.-.-.-.-.-.pipeline task-.-.-.-.-.-.-.-.-.-.-.-.-
    @app.task(name=crawler.get('name')+'.pipeline',
              bind=True,
              pipeline=crawler.get('pipeline'),
              crawler_name=crawler.get('name'),
              max_retries=config.max_retries,
              ignore_result=True)
    def pipeline(self, dict_item, **kwargs):
        try:
            try:

# Path: celeryapp/celery.py
# def save_state(sender=None, conf=None, **kwargs):
# def get_message_queue_size(queue_name):
# IP = re.compile(r'\d{1,3}(?:\.\d{1,3}){3}(?::\d{1,6})?')
# 
# Path: celeryapp/celery.py
# def get_message_queue_size(queue_name):
#     client = redis.Redis(IP.findall(config.broker)[0])
#     length = client.llen(queue_name)
#     return length


# Path: celeryapp/crawl_tasks.py
from celeryapp.celery import app
from celeryapp.celery import get_message_queue_size
from celery import group
from celery.exceptions import Retry
import datetime
import config
import celeryconfig

            app.tasks[self.crawler_name + '.schedule'].apply_async((new_tasks, ), compression='zlib')
        #return parse_result
        #return self.handler.handle(dict_item, **kwargs)
    # -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.

    # -.-.-.-.-.-.-.-.-.-.-.-.-.-..parse_priority task-.-.-.-.-.-.-.-.-.
    @app.task(name=crawler.get('name')+'.parse_priority',
              bind=True,
              handler=crawler.get('parseHandler'), 
              crawler_name=crawler.get('name'),
              ignore_result=True)
    # fake task
    def parse_priority(self, dict_item, **kwargs):
        parse_result, new_tasks = self.handler.handle(dict_item, **kwargs)
        if parse_result:
            app.tasks[self.crawler_name + '.pipeline'].delay(parse_result)
        if new_tasks:
            app.tasks[self.crawler_name + '.schedule'](new_tasks)
    # -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.

    # -.-.-.-.-.-.-.-.-.-.-.-.-.-.pipeline task-.-.-.-.-.-.-.-.-.-.-.-.-
    @app.task(name=crawler.get('name')+'.pipeline',
              bind=True,
              pipeline=crawler.get('pipeline'),
              crawler_name=crawler.get('name'),
              max_retries=config.max_retries,
              ignore_result=True)
    def pipeline(self, dict_item, **kwargs):
        try:
            try:

                return self.pipeline.process([dict_item], **kwargs)