背景
在上一篇《pyspider安装过程记录》中已经提到,pyspider的默认数据库是SQLite,为了和业务系统相结合,所以需要切换到mysql,以便统一跟踪任务执行过程。
实施步骤
- 创建相关数据库及用户
mysql> create database taskdb default character set 'utf8';
Query OK, 1 row affected (0.01 sec)
mysql> create database projectdb default character set 'utf8';
Query OK, 1 row affected (0.01 sec)
mysql> create database resultdb default character set 'utf8';
Query OK, 1 row affected (0.01 sec)
mysql> grant all on taskdb .* to 'user'@'192.168.1.%' identified by 'pwd';
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> grant all on projectdb .* to 'user'@'192.168.1.%' identified by 'pwd';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> grant all on resultdb.* to 'user'@'192.168.1.%' identified by 'pwd';
Query OK, 0 rows affected, 1 warning (0.01 sec)
- 在pyspider中配置数据库连接信息,config.json:
{
"taskdb": "mysql+taskdb://user:password@192.168.1.1:3306/taskdb",
"projectdb": "mysql+projectdb://user:password@192.168.1.1:3306/projectdb",
"resultdb": "mysql+resultdb://user:password@192.168.1.1:3306/resultdb",
"webui": {
"port":5000,
"username": "user",
"password": "password",
"need-auth": true
}
}
- 安装mysql-connector组件
pip install mysql-connector
- 测试启动pyspider
pyspider -c config.json all
- 修改启动脚本
#!/bin/sh
cd `dirname $0`
if [ `ps -ef | grep 'pyspider' |grep -v 'grep' | wc -l` -lt "1" ];
then
nohup pyspider -c config.json all &
echo "pyspider started"
fi
思考
在数据库配置中,使用了3个数据库来存储pyspider的任务和执行情况,是否可以只使用一个库?
通过实验发现,pyspider会在taskdb和resultdb中创建以project名称为表名的表,如果使用一个库里就会有冲突,放弃该想法