请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Scrapy项目实际远程部署时,遇到的一些问题

  1. 代码有修改之后,如何重新发布?:

    目前我只是简单的这样:
    打包发布:scrapyd-deploy cangl -p spider --version 1.0.0
    调度爬虫:curl http://localhost:6800/schedule.json -d project=spider -d spider=movie

疑问1.1:
不是第一次的话,scrapyd上已经有一个job在运行,如果不停掉job,旧的job一直还在,那么旧的代码还是被运行,这个问题该怎么解决?

疑问1.2:
如果有多次打包记录,那么执行 调度爬虫 时, 不指定version的话, 他会运行哪个包呢?

疑问1.3:
打包生成的egg文件,是生成在哪个位置?通过看日志,发现会是这样:
/private/var/folders/wv/j5crpzxs2sv3d_x37wphnpsh0000gn/T/douban_movie-1_0_10-p54z_1vz.egg/spider/middlewares.py,但是,实际上,发现这个文件在本地是不存在的

  1. 关于日志

疑问2.1:
scrapyd上面的 Logs 数据,是存在什么地方?

疑问2.2:
在本地运行,日志都能正常打印, 但是远程运行, 部分日志看不到,如代码, t ry里面 和 catch 里面的日志,在log中都没有打印,但是本地会被打印:

self.logger.info("Make request from data, reading to crawl...")
# TODO 远程部署从这里往下有报错,但是日志又看不到异常信息
try:
    print(type(data_dic))
    data_dic["start_time"] = datetime.datetime.now()
except Exception as e:
   self.logger.error("Make request from data, occur except...", e)

疑问2.3:
scrapyd 服务重启之后, 原先的日志发现都没了,在哪里找?

疑问2.4:
scrapyd上面的日志, 当某个spider的日志非常多, 需要定位问题时,直接打开log页面搜索,似乎不可行,这该怎么解决?

  1. 基于scrpay-redis, 运行几个小时之后, 发现会timeout, 进程被退出,日志:
...
redis.exceptions.ConnectionError: Error while reading from socket: (60, 'Operation timed out')

以上,是我远程部署时,实际遇到的一些问题,因为老师也比较忙, 我想集中起来提问, 不过问题比较多, 辛苦老师解答了, 谢谢?

正在回答 回答被采纳积分+3

1回答

bobby 2020-03-21 19:49:02
  1. scrapyd细节需要看看scrapyd的官方文档, 如果不想了解这么多细节 可以看看这个项目 https://github.com/Gerapy/Gerapy。 这个是封装过scrapyd的

  2. scrapy-redis的报错我还没有遇到过,这个报错是一直出现还是偶尔出现? 这个是redis的报错信息吗?

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信