ScrapyD с Django перестает работать через некоторое время - PullRequest
0 голосов
/ 20 января 2020

У меня есть целое приложение 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

...