Соберите все журналы всего потока задач сельдерея

@shared_task()
def run_scraper_task():
    ImportDataTaskInfo = apps.get_model("data", "TaskInfo")
    logger = get_task_logger("A")
    logger.info("XXXXXXX")
    task = TaskInfo.objects.create(status=DataTaskStatuses.IN_PROGRESS)
    try:
        logger.info("XXXX")
        crawler_settings = Settings()
        crawler_settings.setmodule(setting1)
        crawler = CrawlerProcess(settings=crawler_settings)
        logger.info("XXXX")
        crawler.crawl(Spider)
        reactor.run()
        logger.info("XXXX")
        task.status = TaskStatuses.SUCCESS
        logger.info("XXXX")
    except Exception as error:
        logger.error("XXXXX")
        task.info += str(error) + "\n"
        task.status = TaskStatuses.ERROR
    finally:
        import_task.save()

Итак, у меня есть scrapy, подключенный к задаче celery, и scrapy выполняет spider.py и pipeline.py, где у меня, например

def process_item(self, item, spider):
    logger = get_task_logger("A")
    logger.info("Pipeline activated.")
    # i want this message to go into task.info.

Я хочу внедрить все мои журналы в атрибут task.info объекта. Как я могу поймать это в пауке и в конвейере?

Я пытался поймать соответствующий объект задачи для каждого шага, но это кажется не оптимальным вариантом.

Вернуться на верх