Koot
自我完善中~
回主页
在Ubuntu/Debian配置一个开源的分布式12306购票助手

#简介

最近在Github上看到一个有趣的项目–12306购票助手;它是一个基于命令行的分布式开源购票程序,还可以将主节点跟子节点部署在多台服务器,提高抢票效率

#注意事项

  • 12306购票助手需要Python 3.6以上版本的运行环境
  • 分布式集群功能依赖于Redis

#升级Python3

如果当前系统的Python版本太低,则需要先升级到Python 3.6

$ python3 -V
Python 3.5.2
$ apt-get update && apt-get install make gcc gcc-c++ git -y  //安装编译与克隆相关组件
$ wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
$ tar -xvzf Python-3.6.8.tgz
$ cd Python-3.6.8
$ ./configure
$ make && make install
Looking in links: /tmp/tmpvn_5ehfc
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-18.1 setuptools-40.6.2  //出现以上提示则代表安装成功
$ pip3 -V  //确认pip3版本
pip 18.1 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
$ python3 -V  //确认Py3版本,如果仍然显示旧版本,则需要替换软链路,输入以下命令
$ mv /usr/bin/python3 /usr/bin/python3.bak
$ ln -s /usr/local/bin/python3.6 /usr/bin/python3  //其中/usr/local/bin/python3.X为Py3的安装路径

#安装Redis

$ mkdir /root/redis/ && cd /root/redis/ && wget http://download.redis.io/releases/redis-5.0.3.tar.gz
$ tar -xvzf redis-5.0.3.tar.gz
$ cd redis-5.0.3
$ make && make install
$ mkdir /etc/redis/
$ cp -r /root/redis/redis-5.0.3/redis.conf /etc/redis/6379.conf  //将redis的配置文件复制到/etc/redis/目录下
//Redis默认监听端口为6379

#配置Redis

$ /usr/local/bin/redis-server /usr/local/bin/redis.conf  //启动Redis
//配置后台启动
$ nano /etc/redis/6379.conf  //将字段daemonize后面的no改为yes
$ cp -r /root/redis/redis-5.0.3/utils/redis_init_script /etc/init.d/redisd
$ chmod +x /etc/init.d/redisd && update-rc.d -f redisd defaults
$ /etc/init.d/redisd start  //启动Redis
$ /etc/init.d/redisd stop  //关闭Redis

#安装py12306

$ cd ~ && git clone https://github.com/pjialin/py12306
$ pip3 install -r ~/py12306/requirements.txt
//如果执行pip3过程中出现错误subprocess.CalledProcessError: Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1.则运行以下命令
$ ln -s /usr/share/pyshared/lsb_release.py /usr/local/lib/python3.6/site-packages/lsb_release.py

#配置py12306

//在12306助手的安装目录下默认有一个示例配置文件,我们对它进行修改

$ cd ~/py12306/ && cp -r env.py.example env.py $ nano env.py //可参照示例文件中的提示修改,如果需要查询不同的车次跟座位等信息可以修改如下字段

        'account_key': 0, # 将会使用指定账号下单
        'left_dates': [ # 出发日期
            "2019-01-25",
            "2019-01-26",
        ],
        'stations': { # 车站 支持多个车站同时查询
            'left': '北京',
            'arrive': '深圳',
        },
        'members': [ # 乘客姓名,会根据当前账号自动识别乘客类型
            "张三",
            "王五",             # 7, # 支持通过序号确定唯一乘客
        ],
        'allow_less_member': 0, # 是否允许余票不足时提交部分乘客
        'seats': [ # 筛选座位
            '硬卧',
            '硬座'      ],
        'train_numbers': [ # 筛选车次 可以为空
            "K356",
            "K1172",
            "K4184"
        'except_train_numbers': [ # 筛选车次,排除车次

$ python3 main.py -t -n  //测试运行状态

正在尝试恢复用户: [email protected]

用户恢复成功: [email protected]

# 欢迎回来,XXX #

============================================================

|=== 查询记录恢复成功 上次查询 2019-01-21 22:05:08.516526 ===|

============================================================

 

>> 第 2 次查询 北京 -> 深圳 2019-01-21 22:07:47

出发日期 2019-01-25: 北京  –  深圳      耗时 0.52      停留 0.54

出发日期 2019-01-26: 北京  –  深圳      耗时 0.14      停留 0.60

# 测试完成,请检查输出是否正确 #

$ python3 main.py  //启动程序

#配置py12306子节点

  //子节点配置文件位于~/py12306/
$ cd ~/py12306/
$ cp -r env.slave.py.example env.slave.py && nano env.slave.py  //可以根据配置文件内的提示进行更改
$ python3 main -c env.slave.py  //启动子节点

#卸载

删除相关文件即可

$ rm -rf ~/py12306/
$ rm -rf /root/redis/
$ rm -rf /etc/redis/
$ rm -rf /etc/init.d/redisd
$ rm -rf /usr/local/bin/redis-server
$ rm -rf /usr/local/bin/redis.conf

<完>


参考:
Github-py12306
Cnblogs-pqchao

Leave a Reply

textsms
account_circle
email

回主页

在Ubuntu/Debian配置一个开源的分布式12306购票助手
最近在Github上看到一个有趣的项目--12306购票助手;它是一个基于命令行的分布式开源购票程序,还可以将主节点跟子节点部署在多台服务器,提高抢票效率...
Scan QR code to continue reading
2019-01-22