'Process each Request/Item (given in the output parameter) returned
from the given spider'

def _process_spidermw_output(self, output, request, response, spider):

    if isinstance(output, Request):
        self.crawler.engine.crawl(request=output, spider=spider)
    elif isinstance(output, (BaseItem, dict)):
        self.slot.itemproc_size += 1
        dfd = self.itemproc.process_item(output, spider)
        dfd.addBoth(self._itemproc_finished, output, response, spider)
        return dfd
    elif (output is None):
        pass
    else:
        typename = type(output).__name__
        logger.error('Spider    must    return    Request,    BaseItem,    dict    or    None,    got    %(typename)r    in    %(request)s', {'request': request, 'typename': typename}, extra={'spider': spider})
