作者:zjjj-jz政 | 来源:互联网 | 2023-08-27 16:11
一.介绍 Scrapyd可以管理多个项目,每个项目可以上传多个版本,但只有最新的版本会用于启动新的spiders。Scrapyd还并行运行多个进程,将它们分配到由max_p
一.介绍
Scrapyd 可以管理多个项目,每个项目可以上传多个版本,但只有最新的版本会用于启动新的spiders。
Scrapyd 还并行运行多个进程,将它们分配到由max_proc和max_proc_per_cpu选项给出的固定数量的槽中,启动尽可能多的进程来处理负载。
除了调度和管理流程,Scrapyd 还提供了一个 JSON Web 服务来上传新的项目版本和调度蜘蛛。
从 0.11 开始,Scrapyd 还提供了一个最小的Web 界面。目前1.30版本。
安装后默认端口是6800
下面是一个调试spider的示例
$ curl http://localhost:6800/schedule.json -d project=myproject -d spider=spider2
{"status": "ok", "jobid": "26d1b1a6d6f111e0be5c001e648c57f8"}
二.安装
Scrapyd 依赖于以下库,但安装过程会负责安装缺少的库(python已安装了3.10.5):
Python 3.6 or above
Scrapy 1.2 or above
Twisted 17.9 or above
使用pip3 list 先查看已安装的包,发现Twisted已安装了22.4
1)安装 Scrapy
pip3 install scrapy
2)安装Scrapyd 脚本(可以不用手动安装scrapy,因为安装scrapyd时会负责安装缺少的包)
pip3 install scrapyd
#建立新的软接接
ln -s /usr/local/bin/python310/bin/scrapyd /usr/bin/scrapyd
3)启动scrapyd时,提示错误:No module named '_sqlite3' 没有找到sqlite3,安装sqlite3命令如下:
cd tmp
wget https://www.sqlite.org/2022/sqlite-autoconf-3390100.tar.gz
tar -xvzf sqlite-autoconf-3390100.tar.gz
cd sqlite-autoconf-3390100
#配置,注意这里指定了路径后,下面有地方配置需要对应:
./configure --prefix=/usr/local/bin/sqlite
#编译和安装
make -j4&&sudo make install
检查sqlite3是否完装完成,输入sqlite3 显示当前的版本,按.exit 命令退出
sqlite3安装版本,参考: https://sqlite.org/index.html
所有下载版本地址:https://sqlite.org/chronology.html
4)安装sqlite3后,启动再scrapyd还是不行,查找_sqlite3.so文件发现,在python2.7里面
[root@iZwz927xptl8kw8zqrmwvcZ lib-dynload]# find / -name _sqlite3.so
/usr/local/aegis/PythonLoader/lib/python2.7/lib-dynload/_sqlite3.so
5)修改/tmp/Python-3.10.5/setup.py文件,找到 sqlite_inc_paths,在其中添加sqlite3安装路径,数组后面二项是新增的
sqlite_inc_paths = [ '/usr/include',
'/usr/include/sqlite',
'/usr/include/sqlite3',
'/usr/local/include',
'/usr/local/include/sqlite',
'/usr/local/include/sqlite3',
'/usr/local/bin/sqlite/include',
'/usr/local/bin/sqlite/include/sqlite3'
]
6)再次编译安装python3, cd到tmp/python-3.10.5下进行配置,接着编译安装
[root@iZwz927xptl8kw8zqrmwvcZ Python-3.10.5]# ./configure --prefix=/usr/local/bin/python310 --enable-loadable-sqlite-extensions
[root@iZwz927xptl8kw8zqrmwvcZ Python-3.10.5]# make && sudo make install
再次查找_sqlite3.so,发现多了文件:
[root@iZwz927xptl8kw8zqrmwvcZ Python-3.10.5]# find / -name _sqlite*.so
/usr/local/bin/python310/lib/python3.10/lib-dynload/_sqlite3.cpython-310-x86_64-linux-gnu.so
/usr/local/aegis/PythonLoader/lib/python2.7/lib-dynload/_sqlite3.so
/tmp/Python-3.10.5/build/lib.linux-x86_64-3.10/_sqlite3.cpython-310-x86_64-linux-gnu.so
另一种测试python3使用sqlite3是否正常,导入import sqllite3是没有报错
[root@iZwz927xptl8kw8zqrmwvcZ Python-3.10.5]# python3
Python 3.10.5 (main, Jul 13 2022, 12:30:13) [GCC 8.5.0 20210514 (Red Hat 8.5.0-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> exit
sqlite3参考:https://www.cnblogs.com/laityguanguan/p/16186852.html
7)scrapyd 配置文件编辑
#目录 /usr/local/bin/python310/lib/python3.10/site-packages/scrapyd
找到default_scrapyd.conf,编辑
8)使用后动服务运行
scrapyd &
9)放开6800 端口,在外面访问,界面如下:
总结:之所以要修改tmp/Python-3.10.5/setup.py文件,是因为在安装sqlite3时,指定了安装路径./configure --prefix=/usr/local/bin/sqlite