Я использую Scrapy и Scrapyd для мониторинга определенных сайтов. Выходные файлы сжаты jsonlines. Сразу после того, как я отправляю расписание заданий на scrapyd, я вижу, что выходной файл создается и растет, когда он царапается.Переименуйте выходной файл после завершения патчи паутин
Моя проблема: я не могу быть уверен, когда выходной файл готов, т. Е. Паук завершен. Один из способов сделать это - переименовать выходной файл в нечто вроде «output.done», чтобы мои другие программы могли перечислить эти файлы и обработать их.
Мой текущий метод - проверить время изменения файла, и если он не изменится в течение пяти минут, я предполагаю, что это сделано. Тем не менее, пять минут иногда кажется недостаточным, и я действительно надеюсь, что мне не нужно продлевать его до 30 минут.
Спасибо. Использование сигнала - хорошая идея, но любая мысль о том, как она работает с существующим конвейером? В частности, я не уверен, могу ли я просто переименовать файл в начале и в конце паука. Разве это не сломает обработчик выходного файла экспортера? – Andy
Если вы используете конвейер для записи выходного файла, вы можете использовать обратные вызовы spider_open/spider_close: http://doc.scrapy.org/en/latest/topics/item-pipeline.html#writing-your-own -item-газопровод – sardok