社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  分享发现

Scrapyd日志输出优化

芝麻HTTP代理 • 8 年前 • 1571 次点击  

现在维护着一个新浪微博爬虫,爬取量已经5亿+,使用了Scrapyd部署分布式。

Scrapyd运行时会输出日志到本地,导致日志文件会越来越大,这个其实就是Scrapy控制台的输出。但是这个日志其实有用的部分也就是最后那几百行而已,如果出错,去日志查看下出错信息就好了。

所以现在可以写一个脚本,来定时更新日志文件,将最后的100行保存下来就好了。

Scrapyd默认的日志目录是在用户文件夹下的logs目录。

所以在这里我们指定dir=~/logs

新建bash脚本,内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#!/bin/sh

clean() {
  for file in $1/*
  do
    if [ -d $file ]
    then
      clean $file
    else
      echo $file
      temp=$(tail -100 $file)
      echo "$temp" > $file
    fi
  done
}

dir=~/logs
clean $dir

新建这样的一个脚本,然后命名为 clean.sh,我的直接放在了用户文件夹下。

然后crontab创建定时任务。

执行

crontab -e

我们想要一分钟清理一次日志文件。

输入

*/1 * * * * /bin/sh ~/clean.sh

然后退出之后,crontab就可以每隔一分钟执行一次clean.sh,清理日志了。

这样我们就不怕日志文件大量占用主机空间啦~

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/4900