code: def producer(cfg_uri, queue, logger=None):
      
      _info, _exception = _deal_logger(logger)
      cfg_uri = _deal_uri(cfg_uri)
  
      def decorator(function):
          @wraps(function)
          def wapper(*args, **kwargs):
              client = _conn(cfg_uri, queue, _info)
              for item in function(*args, **kwargs):
                  try:
                      if not isinstance(item, dict):
                          item = {'data': item}
                      data = dumps(item, ensure_ascii=False)
                      client.send(queue, data, headers={'persistent': 'true'})
                      _info('Producer insert %s - %s' % (queue, item))
                  except ProducerFatalError, e:
                      _exception(e)
                      break
                  except Exception, e:
                      _exception(e)
              client.disconnect()
              _info('disconnected %s' % cfg_uri)
          return wapper
      return decorator
docs: 分布式爬虫的任务端（将任务加入Queue）
  
      注意：
          被包装的函数需要返回一个可迭代的对象
  
      :param cfg_uri: 读取任务的路径
      :param queue: Queue的名字
      :param logger: 日志记录工具