python - 带有 Django 的 ScrapyD 在一段时间后停止运行
问题描述
我在生产服务器上部署了一个带有 scrapyd 的整个 django(2.2) 应用程序。它似乎工作正常,但我最近注意到一个趋势,即爬虫在几天后停止运行。我使用 cronjobs 运行 scrapyD 服务器。
- 当服务器重新启动时,将运行一个 .sh 文件。
- 使用
nohup
命令:scrapyd
此脚本激活 venv 并使用命令启动 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 行,在 post return 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)
_handle_response 中的文件“/var/www/venv/lib/python3.6/site-packages/scrapyd_api/client.py”,第 34 行引发 ScrapydResponseError(json['message'])
scrapyd_api.exceptions.ScrapydResponseError:尝试写入只读数据库
我已经阅读了一些人们建议设置权限的答案。这不是那个,我的目录的权限被设置并且刮板运行了几天。
我通过以下方式重新启动生产服务器sudo reboot
刮板再次运行了几天,然后又神秘地停止了同样的问题。
我正在使用 MySQL 作为数据库。Ubuntu 是 Digital Ocean 的服务器。
我部署了另一台scrapyd服务器,它运行相同的进程,但它只是在运行而不是使用。这两个服务器的端口不同,所以我认为没有冲突。
任何帮助将不胜感激,因为一遍又一遍地重新启动生产服务器似乎非常不合理。我看到了一个类似的问题,它与我所经历的很接近:
解决方案
推荐阅读
- c++ - 我可以从使用 Visual Studio 2017 构建的 C++ 程序中使用 Access Database Engine 2010 吗?
- c++ - 悬空指针(我认为)导致程序崩溃?
- python - Dlib 已安装但无法打开 - Mac M1
- python - 在 Numpy 中,如何获得与 arr 百分位数相同的值,但包括负数?
- python - 如何在两个python类实例之间执行求和并获取每个实例变量的长度列表
- paging - 如何使用页表基址寄存器 (PTBR) 使用页码定位正确的帧?
- node.js - 反应错误:找不到模块'./common'
- reactjs - 错误:每次调整屏幕大小后,呈现的挂钩数量少于预期
- javascript - 在 iframe 中注入并执行 javascript
- python - 超时后按下提交按钮时websocket页面重置