def __call__(self, *args, **kwargs):
        self.scraper.task_ctx.name = getattr(self.fn, 'func_name', self.fn.__name__)
        self.scraper.task_ctx.id = self.task_id or uuid4()

        try:
            self.scraper.log.debug('Begin task', extra={
                'taskArgs': args,
                'taskKwargs': kwargs
                })
            value = self.fn(*args, **kwargs)
            for listener in self._listeners:
                listener.notify(value)
            return value
        except Exception as e:
            self.scraper.log.exception(e)
        finally:
            self.scraper.task_ctx.name = None
            self.scraper.task_ctx.id = None
Execute the wrapped function. This will either call it in
dataset/ETHPy150Open pudo/scrapekit/scrapekit/tasks.py/Task.__call__