pyspider使用mysql作为任务数据库

背景

在上一篇《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:[email protected]:3306/taskdb",
	"projectdb": "mysql+projectdb://user:[email protected]:3306/projectdb",
	"resultdb": "mysql+resultdb://user:[email protected]: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名称为表名的表,如果使用一个库里就会有冲突,放弃该想法

你可能感兴趣的:(linux,pyspider,python)