Я пишу веб-приложение Django, которое использует Scrapy и локально все отлично работает, но мне интересно, как настроить производственную среду, в которой мои пауки запускаются периодически и автоматически (я имею в виду, что как только пауки завершают свою работу, они запускаются повторно. через определенное время ... например, через 24 часа). В настоящее время я запускаю своих пауков, используя специальную команду Django, основная цель которой - разрешить использование ORM Django для хранения очищенных элементов, поэтому я запускаю:
python manage.py scrapy crawl myspider
и результаты хранятся в моей базе данных Postgres. Я установил scrapyd, так как кажется, что это предпочтительный способ запуска scrapy в производственной среде. но, к сожалению, я не могу использовать его, не написав патч обезьяны (чего я бы хотел избежать), поскольку он использует JSON для своего API веб-сервиса, и я получаю исключение «modelX is not json serializable». Я посмотрел на django-dynamic-scraper, но, похоже, он не предназначен для гибкости и настраиваемый, как и Scrapy, и на самом деле в документах говорится:
Поскольку он упрощает работу, DDS не может использоваться для всех видов скребков, но он хорошо подходит для относительно распространенного случая регулярного парсинга веб-сайта со списком обновленных элементов.
Я также думал использовать crontab для планирования моих пауков ... но с каким интервалом мне следует запускать своих пауков? и если моему экземпляру EC2 (я собираюсь использовать веб-службы Amazon для размещения своего кода) потребуется перезагрузка, мне придется повторно запустить все мои пауки вручную ... ммм ... все становится сложным ... Итак ... что может быть эффективной настройкой для производственной среды? Как ты с этим справляешься? Что ты посоветуешь?