Соберите все журналы всего потока задач сельдерея
@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 объекта. Как я могу поймать это в пауке и в конвейере?
Я пытался поймать соответствующий объект задачи для каждого шага, но это кажется не оптимальным вариантом.