/qiandaofork

[当前版本: 20220911] Qiandao —— 一个HTTP请求定时任务自动执行框架 base on HAR Editor and Tornado Server

Primary LanguagePythonMIT LicenseMIT

QianDao for Python3

Qiandao —— 一个HTTP请求定时任务自动执行框架 base on HAR Editor and Tornado Server

HomePage Github Gitee license Build Image last commit commit activity docker version docker pulls docker stars docker image size repo size python version

All Contributors

操作说明

HAR editor 使用指南

操作前请一定要记得备份数据库

请勿同时运行新旧版 Qiandao 框架, 或将不同运行中容器的数据库映射为同一文件, 更新后请重启容器或清空浏览器缓存

Docker容器部署方式

  1. Docker地址 : https://hub.docker.com/r/a76yyyy/qiandao

  2. Docker Compose部署方式

    # 创建并切换至 qiandao 目录
    mkdir -p $(pwd)/qiandao/config && cd $(pwd)/qiandao
    # 下载 docker-compose.yml
    wget https://fastly.jsdelivr.net/gh/qiandao-today/qiandao@master/docker-compose.yml
    # 根据需求和配置描述修改配置环境变量
    vi ./docker-compose.yml
    # 执行 Docker Compose 命令
    docker-compose up -d

    配置描述见下文配置环境变量

    如不需要OCR功能或者硬盘空间不大于600M, 请使用 a76yyyy/qiandao:lite-latest 镜像, 该镜像仅去除了OCR相关功能, 其他与主线版本保持一致

  3. Docker部署方式

    docker run -d --name qiandao -p 8923:80 -v $(pwd)/qiandao/config:/usr/src/app/config a76yyyy/qiandao
  • 容器内部无法连通外网时尝试该命令:

    docker run -d --name qiandao --env PORT=8923 --net=host -v $(pwd)/qiandao/config:/usr/src/app/config a76yyyy/qiandao

    请注意使用该命令创建容器后, 请将模板里 http://localhost/ 形式的api请求, 手动改成api://http://localhost:8923/ 后, 才能正常完成相关API请求。

  1. 数据库备份指令 :

    docker cp 容器名:/usr/src/app/config/database.db .
  • 数据库恢复指令 :

    docker cp database.db 容器名:/usr/src/app/config/
  1. Docker 配置邮箱(强制使用SSL)

    docker run -d --name qiandao -p 8923:80 -v $(pwd)/qiandao/config:/usr/src/app/config --env MAIL_SMTP=STMP服务器 --env MAIL_PORT=邮箱服务器端口 --env MAIL_USER=用户名 --env MAIL_PASSWORD=密码  --env DOMAIN=域名 a76yyyy/qiandao
  2. Docker 使用MySQL

    docker run -d --name qiandao -p 8923:80 -v $(pwd)/qiandao/config:/usr/src/app/config --ENV DB_TYPE=mysql --ENV JAWSDB_MARIA_URL=mysql://用户名:密码@hostname:port/数据库名 a76yyyy/qiandao
  3. 其余可参考 Wiki : Docker部署 Qiandao 站教程

  4. DockerHub : 介绍

  5. Docker已预装Curl环境, 默认安装pycurl模组

Web源码部署方式

  1. Version : python3.8

    # 请先cd到框架源码根目录
    pip3 install -r requirements.txt
  2. 可选 redis, Mysql

    mysql < qiandao.sql
  3. 修改相关设置

    # 请先在框架根目录下新建local_config.py, 在linux环境下可执行以下命令
    cp config.py local_config.py
    # 修改local_config.py文件的内容不受通过git更新源码的影响
  4. 启动

    python ./run.py

    数据不随项目分发, 去 https://github.com/qiandao-today/templates 查看你需要的模板, 点击下载。

    在你自己的主页中 「我的模板 +」 点击 + 上传模板。

    模板需要发布才会在「公开模板」中展示, 你需要管理员权限在「我的发布请求」中审批通过。

  5. 设置管理员

    python ./chrole.py your@email.address admin
  6. qiandao.py-CMD操作

    python ./qiandao.py tpl.har [--key=value]* [env.json]

config.py-配置环境变量

变量名 是否必须 默认值 说明
BIND 0.0.0.0 监听地址
PORT 8923 监听端口
QIANDAO_DEBUG False 是否启用Debug模式
WORKER_METHOD Queue 任务定时执行方式,
默认为 Queue, 可选 Queue 或 Batch,
Batch 模式为旧版定时任务执行方式, 性能较弱,
建议仅当 Queue 定时执行模式失效时使用
MULTI_PROCESS False 是否启用多进程模式,
Windows平台无效
AUTO_RELOAD False 是否启用自动热加载,
MULTI_PROCESS=True时无效
ENABLE_HTTPS False 发送的邮件链接启用HTTPS,
非程序使用HTTPS, 需要HTTPS需要使用反向代理
DOMAIN qiandao.today 指定访问域名,
<建议修改>, 否则邮件重置密码等功能无效
AES_KEY binux AES加密密钥, <强烈建议修改>
COOKIE_SECRET binux cookie加密密钥, <强烈建议修改>
COOKIE_DAY 5 Cookie在客户端保留天数
DB_TYPE sqlite3 需要使用MySQL时设置为'mysql'
JAWSDB_MARIA_URL '' 需要使用MySQL时,
设置为 mysql://用户名:密码@hostname:port/数据库名?auth_plugin=
QIANDAO_SQL_ECHO False 是否启用 SQLAlchmey 的日志输出, 默认为 False,
设置为 True 时, 会在控制台输出 SQL 语句,
允许设置为 debug 以启用 debug 模式
QIANDAO_SQL_LOGGING_NAME qiandao.sql_engine SQLAlchmey 日志名称, 默认为 'qiandao.sql_engine'
QIANDAO_SQL_LOGGING_LEVEL Warning SQLAlchmey 日志级别, 默认为 'Warning'
QIANDAO_SQL_ECHO_POOL True 是否启用 SQLAlchmey 的连接池日志输出, 默认为 True,
允许设置为 debug 以启用 debug 模式
QIANDAO_SQL_LOGGING_POOL_NAME qiandao.sql_pool SQLAlchmey 连接池日志名称, 默认为 'qiandao.sql_pool'
QIANDAO_SQL_LOGGING_POOL_LEVEL Warning SQLAlchmey 连接池日志级别, 默认为 'Warning'
QIANDAO_SQL_POOL_SIZE 10 SQLAlchmey 连接池大小, 默认为 10
QIANDAO_SQL_MAX_OVERFLOW 50 SQLAlchmey 连接池最大溢出, 默认为 50
QIANDAO_SQL_POOL_PRE_PING True 是否在连接池获取连接前,
先ping一下, 默认为 True
QIANDAO_SQL_POOL_RECYCLE 3600 SQLAlchmey 连接池回收时间, 默认为 3600
QIANDAO_SQL_POOL_TIMEOUT 60 SQLAlchmey 连接池超时时间, 默认为 60
QIANDAO_SQL_POOL_USE_LIFO True SQLAlchmey 是否使用 LIFO 算法, 默认为 True
REDISCLOUD_URL '' 需要使用Redis或RedisCloud时,
设置为 http://rediscloud:密码@hostname:port
REDIS_DB_INDEX 1 默认为1
QIANDAO_EVIL 500 (限Redis连接已开启)登录用户或IP在1小时内
操作失败(如登录, 验证, 测试等操作)次数*相应惩罚分值
达到evil上限后自动封禁直至下一小时周期
EVIL_PASS_LAN_IP True 是否关闭本机私有IP地址用户及Localhost_API请求的evil限制
TRACEBACK_PRINT False 是否启用在控制台日志中打印Exception的TraceBack信息
PUSH_PIC_URL push_pic.png 默认为push_pic.png
PUSH_BATCH_SW True 是否允许开启定期推送 Qiandao 任务日志, 默认为True
MAIL_SMTP "" 邮箱SMTP服务器
MAIL_PORT "" 邮箱SMTP服务器端口
MAIL_USER "" 邮箱用户名
MAIL_PASSWORD "" 邮箱密码
MAIL_FROM MAIL_USER 发送时使用的邮箱,默认与MAIL_USER相同
MAIL_DOMAIN mail.qiandao.today 邮箱域名,没啥用, 使用的DOMAIN
PROXIES "" 全局代理域名列表,用"
PROXY_DIRECT_MODE "" 全局代理黑名单模式,默认不启用
"url"为网址匹配模式;"regexp"为正则表达式匹配模式
PROXY_DIRECT "" 全局代理黑名单匹配规则
USE_PYCURL True 是否启用Pycurl模组
ALLOW_RETRY True 在Pycurl环境下部分请求可能导致Request错误时,
自动修改冲突设置并重发请求
DNS_SERVER "" 通过Curl使用指定DNS进行解析(仅支持Pycurl环境),
如 8.8.8.8
CURL_ENCODING True 是否允许使用Curl进行Encoding操作
CURL_CONTENT_LENGTH True 是否允许Curl使用Headers中自定义Content-Length请求
NOT_RETRY_CODE 详见配置... 详见配置...
EMPTY_RETRY True 详见配置...
USER0ISADMIN True 第一个注册用户为管理员,False关闭
EXTRA_ONNX_NAME "" config目录下自定义ONNX文件名
(不填 ".onnx" 后缀)
多个onnx文件名用"|"分隔
EXTRA_CHARSETS_NAME "" config目录下自定义ONNX对应自定义charsets.json文件名
(不填 ".json" 后缀)
多个json文件名用"|"分隔

详细信息请查阅config.py

旧版local_config.py迁移

Line Delete Modify
10 import urlparse from urllib.parse import urlparse
18 mysql_url = urlparse.urlparse(os.getenv('JAWSDB_MARIA_URL', '')) mysql_url = urlparse(os.getenv('JAWSDB_MARIA_URL', ''))
19 redis_url = urlparse.urlparse(os.getenv('REDISCLOUD_URL', '')) redis_url = urlparse(os.getenv('REDISCLOUD_URL', ''))
43 aes_key = hashlib.sha256(os.getenv('AES_KEY', 'binux').encode('utf-8')).digest() aes_key = hashlib.sha256(os.getenv('AES_KEY', 'binux')).digest()
44 cookie_secret = hashlib.sha256(os.getenv('COOKIE_SECRET', 'binux').encode('utf-8')).digest() cookie_secret = hashlib.sha256(os.getenv('COOKIE_SECRET', 'binux')).digest()

更新方法

  1. 源码部署更新

    # 先cd到源码所在目录, 执行命令后重启进程 
    wget https://gitee.com/a76yyyy/qiandao/raw/master/update.sh -O ./update.sh && \
    sh ./update.sh 
  2. Docker容器部署更新

    # 先进入容器后台, 执行命令后重启容器 
    wget https://gitee.com/a76yyyy/qiandao/raw/master/update.sh -O /usr/src/app/update.sh && \
    sh /usr/src/app/update.sh
  3. 强制同步最新源码

    # 先cd到仓库代码根目录, 执行命令后重启进程 
    wget https://gitee.com/a76yyyy/qiandao/raw/master/update.sh -O ./update.sh && \
    sh ./update.sh -f

更新日志

详见 CHANGELOG.md

维护项目精力有限, 仅保证对 Chrome 浏览器的支持。如果测试了其他浏览器可以 Pull Request。

许可

MIT 许可协议

Contributors ✨

Thanks goes to these wonderful people (emoji key):


a76yyyyy

🎨 💻 🚧

Roy Binux

🎨 💻 🚧

AragonSnow

💻 🎨 🚧

Mark

🎨 📝 💡 📖

pidan

🎨

buzhibujue

💻

billypon

💻

acooler15

💻 🚧

shxyke

💻

xiaoxiao

💻

hiCasper

💻

旋子

💻

chen8945

💻

seiuneko

💻

powersee

💻

This project follows the all-contributors specification. Contributions of any kind welcome!