-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' of github.com:gateray/msg-sender
# Conflicts: # README.md
- Loading branch information
Showing
3 changed files
with
126 additions
and
186 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,225 +1,161 @@ | ||
#概述 | ||
# 概述 | ||
|
||
>msg-sender是一个基于tornado框架的异步消息发送接口,当前支持消息发送微信企业号、玄武短信接口和Email; 接口调用支持http和websocket。遵循MIT开源许可。 | ||
> msg-sender是一个基于tornado框架的异步消息发送接口,当前支持消息发送微信企业号、玄武短信接口和Email; 接口调用支持http和websocket。遵循MIT开源许可。 | ||
#接口调用方式 | ||
# 接口调用方式 | ||
|
||
##微信企业号消息发送接口 | ||
## 微信企业号消息发送接口 | ||
|
||
关闭签名: | ||
|
||
字段名|字段类型|是否必须|描述 | ||
|
||
---------|------------|------------|------ | ||
|
||
title|String|是|消息的标题 | ||
|
||
content|String|是|消息的内容 | ||
字段名 | 字段类型 | 是否必须 | 描述 | ||
-----------|-----------|-----------|----------- | ||
title | String | 是 | 消息的标题 | ||
content | String | 是 | 消息的内容 | ||
|
||
``` | ||
POST http://host:8000/qywx?content=abc&title=接口测试 | ||
``` | ||
|
||
开启签名: | ||
|
||
字段名|字段类型|是否必须|描述 | ||
---------|------------|------------|------ | ||
|
||
title|String|是|消息的标题 | ||
|
||
content|String|是|消息的内容 | ||
|
||
timestamp|Integer|是|unix时间戳(当前时间,10位数字) | ||
|
||
signature|String|是|16进制格式的签名值,支持md5、sha1、sha128、sha224、 sha256、 sha384、 sha512签名方法,默认为sha256。 | ||
字段名 | 字段类型 | 是否必须 | 描述 | ||
-----------|-----------|-----------|----------- | ||
title | String | 是 | 消息的标题 | ||
content | String | 是 | 消息的内容 | ||
timestamp | Integer | 是 | unix时间戳(当前时间,10位数字) | ||
signature | String | 是 | 16进制格式的签名值,支持md5、sha1、sha128、sha224、 sha256、 sha384、 sha512签名方法,默认为sha256。 | ||
|
||
签名说明: | ||
|
||
1)将所有字段按key自然排序后,拼接key-value得到字符串A | ||
* 将所有字段按key自然排序后,拼接key-value得到字符串A | ||
|
||
2)字符串A后拼接上apiKey,得到字符串B | ||
* 字符串A后拼接上apiKey,得到字符串B | ||
|
||
3)字符串B进行签名,输出的16进制字符串为signature字段的值 | ||
* 字符串B进行签名,输出的16进制字符串为signature字段的值 | ||
|
||
示例: | ||
|
||
> 1)假设title=test&content=test消息内容×tamp=1507545674, apiKey=mysecret | ||
* 假设title=test&content=test消息内容×tamp=1507545674, apiKey=mysecret | ||
|
||
> 2)按key自然排序的结果为:content=test消息内容×tamp=1507545674&title=test | ||
* 按key自然排序的结果为:content=test消息内容×tamp=1507545674&title=test | ||
|
||
> 3)拼接后得到字符串:contenttest消息内容timestamp1507545674titletest | ||
* 拼接后得到字符串:contenttest消息内容timestamp1507545674titletest | ||
|
||
> 4)拼接上apiKey得到的字符串:contenttest消息内容timestamp1507545674titletestmysecret | ||
* 拼接上apiKey得到的字符串:contenttest消息内容timestamp1507545674titletestmysecret | ||
|
||
> 5)上一步得到的字符串进行sha256签名,得到签名:28924486d2aaf886565736a50e61bb9fb0d3baf613e2333b0e497934699ec15b | ||
* 上一步得到的字符串进行sha256签名,得到签名:28924486d2aaf886565736a50e61bb9fb0d3baf613e2333b0e497934699ec15b | ||
|
||
``` | ||
POST http://host:8000/qywx?title=test&content=test消息内容×tamp=1507545674&signature=28924486d2aaf886565736a50e61bb9fb0d3baf613e2333b0e497934699ec15b | ||
``` | ||
|
||
> 签名有效期为1分钟 | ||
|
||
|
||
##玄武短信消息发送接口 | ||
## 玄武短信消息发送接口 | ||
|
||
关闭签名: | ||
|
||
字段名|字段类型|是否必须|描述 | ||
|
||
---------|------------|------------|------ | ||
|
||
title|String|是|消息的标题 | ||
|
||
content|String|是|消息的内容 | ||
字段名 | 字段类型 | 是否必须 | 描述 | ||
----------|--------------|--------------|------- | ||
title | String | 是 | 消息的标题 | ||
content | String | 是 | 消息的内容 | ||
|
||
``` | ||
POST http://host:8000/sms?content=这是一条测试短信&title=标题会忽略 | ||
``` | ||
|
||
开启签名: | ||
|
||
规则与上面微信企业号方式相同 | ||
|
||
|
||
|
||
##Email消息发送接口 | ||
## Email消息发送接口 | ||
|
||
关闭签名: | ||
|
||
字段名|字段类型|是否必须|描述 | ||
|
||
---------|------------|------------|------ | ||
|
||
title|String|是|消息的标题 | ||
|
||
content|String|是|消息的内容 | ||
字段名 | 字段类型 | 是否必须 | 描述 | ||
----------|-------------|--------------|------- | ||
title | String | 是 | 消息的标题 | ||
content | String | 是 | 消息的内容 | ||
|
||
``` | ||
POST http://host:8000/mail?content=这是一封测试邮件,请勿回复!&title=接口测试 | ||
``` | ||
|
||
开启签名: | ||
|
||
规则与上面微信企业号方式相同 | ||
|
||
# 部署 | ||
|
||
## 环境要求 | ||
|
||
#部署 | ||
|
||
##环境要求 | ||
|
||
1. python 3.5以上 | ||
|
||
2. redis 2.8以上(可选,使用微信企业号发送消息时需要使用) | ||
* python 3.5以上 | ||
|
||
3.推荐linux环境下运行 | ||
* redis 2.8以上(可选,使用微信企业号发送消息时需要使用) | ||
|
||
* 推荐linux环境下运行 | ||
|
||
|
||
##依赖安装 | ||
## 依赖安装 | ||
|
||
``` | ||
git clone https://gitee.com/gateray/msg-sender.git | ||
git clone https://github.com/gateray/msg-sender.git | ||
cd msg-sender | ||
pip install -r requirements.txt | ||
``` | ||
|
||
## 运行 | ||
|
||
|
||
##运行 | ||
|
||
###测试环境 | ||
### 测试环境 | ||
|
||
``` | ||
cd msg-sender | ||
cp local_settings.py.example local_settings.py | ||
python app.py --port=8000 | ||
``` | ||
|
||
|
||
|
||
###生产环境部署建议 | ||
### 生产环境部署建议 | ||
|
||
建议使用nginx作为反向代理,后端开启多个python进程(建议与cpu核数相等)做负载均衡。 | ||
|
||
####打开最多文件数限制: | ||
#### 打开最多文件数限制: | ||
|
||
方式一: | ||
|
||
``` | ||
ulimit -n 1048576 | ||
``` | ||
|
||
方式二: | ||
|
||
``` | ||
vim /etc/security/limits.conf | ||
#加上下面配置: | ||
# 加上下面配置: | ||
* - nofile 1048576 | ||
``` | ||
|
||
方式三(systemd): | ||
|
||
``` | ||
在对应服务的service文件中添加,例如: | ||
vim /lib/systemd/system/nginx.service | ||
[Service] | ||
User=gateray | ||
Group=gateray | ||
LimitNOFILE= 1048576 | ||
#实际上对于nginx,可以通过配置文件中 worker_connections 1048576;指定 | ||
# 实际上对于nginx,可以通过配置文件中 worker_connections 1048576;指定 | ||
``` | ||
|
||
|
||
|
||
####开启多个python进程: | ||
#### 开启多个python进程: | ||
|
||
``` | ||
for i in {8001..8008}; do | ||
nohup python app.py --port=800$i &> /tmp/msg-sender-800$i.log & | ||
done | ||
``` | ||
|
||
强烈推荐使用supervisor去管理进程,以下是一个示例: | ||
|
||
``` | ||
➜ msg-sender git:(master) ✗ cat /etc/supervisord.conf.d/msg-sender.conf | ||
[program:msg-sender-8001] | ||
|
@@ -286,7 +222,7 @@ stdout_logfile=/tmp/%(program_name)s.log ; stdout log path, NONE for none; | |
``` | ||
|
||
####nginx配置: | ||
#### nginx配置: | ||
|
||
``` | ||
|
@@ -364,7 +300,7 @@ http { | |
``` | ||
|
||
#本地压测结果: | ||
# 本地压测结果: | ||
|
||
``` | ||
|
@@ -486,8 +422,8 @@ Percentage of the requests served within a certain time (ms) | |
|
||
|
||
|
||
#联系方式 | ||
# 联系方式 | ||
|
||
QQ:437925289 | ||
|
||
Email:[email protected] | ||
Email:[email protected] |
Oops, something went wrong.