У меня есть целое приложение django (2.2) с scrapyd, развернутым на рабочем сервере. Кажется, работает нормально, но недавно я заметил тенденцию, что сканер просто перестает работать через несколько дней. Я запускаю сервер scrapyD с помощью cronjobs.
- Когда сервер перезагружается, запускается файл. sh.
- Использование команды
nohup
: - Этот скрипт активирует venv и запускает сервер scrapyd используя команду
scrapyd
.
Затем, используя средства управления, я запускаю сканер, который очищает веб-сайт и сохраняет данные в базе данных MySQL. Очистка работает нормально в течение 3 дней, так как я вижу журналы отладки, но затем она не запускается, то есть в каталоге журналов scrapyd не создаются новые журналы.
Затем я вручную запустил контроль управления, чтобы увидеть, что это проблема. Исключение возникает при вызове scrapyd.schedule ():
Файл "/ var / www/venv/lib/python3.6/site-packages/scrapyd_api/wrapper.py", строка 188, в расписании
json = self.client.post ( url, data = data, timeout = self.timeout)
Файл "/ var / www/venv/lib/python3.6/site-packages/requests/sessions.py", строка 581, в пост возвращаемом self.request ('POST', url, data = data, json = json, ** kwargs)
Файл "/ var / www/venv/lib/python3.6/site-packages/scrapyd_api/client.py", строка 38, в запросе возвращает self._handle_response (response)
Файл "/ var / www/venv/lib/python3.6/site-packages/scrapyd_api/client.py ", строка 34, в _handle_response поднять ScrapydResponseError (json ['message'])
scrapyd_api.exceptions.ScrapydResponseError: попытка написать базу данных только для чтения
Я прошел через некоторые ответы где люди рекомендовали установить разрешения. Это не так, права доступа к моему каталогу установлены, и скребок работает в течение нескольких дней.
Я перезагружаю производственный сервер с помощью sudo reboot
Скребок снова запускается на несколько дней, а затем таинственно останавливается снова с той же проблемой.
Я использую MySQL для базы данных. Ubuntu - это сервер Digital Ocean.
У меня развернут другой сервер scrapyd, который проходит через тот же процесс, но он только запущен и не используется. Порты этих двух серверов разные, поэтому я не думаю, что есть пункт sh.
. Любая помощь будет принята, потому что перезапуск рабочего сервера снова и снова кажется очень неразумным. Я видел подобный вопрос, и он близок к тому, что я испытываю:
https://github.com/scrapy/scrapyd/issues/295