GuaikNet 可配置微服务的 HTTP 网络服务端程序开源项目

我要开发同款
匿名用户2018年10月29日
134阅读

技术信息

开源地址
https://github.com/guaik/GuaikNet
授权协议
未知

作品详情

GuaikNet-怪客网络

可配置微服务的HTTP网络服务端程序

安装说明:(CetOS7)yum -y istall epel-releaseyum -y istall gityum -y istall pytho-toolsyum -y istall pytho-pippip istall --upgrade pippip istall toradopip istall gevetpip istall pikapip istall pymogopip istall redisgit cloe https://github.com/guaik/GuaikNet.gitcd ./GuaikNetchmod +x ./start.sh./start.sh# 如果显示如下信息,证明已经成功安装并运行# **********************************# @ Welcome to use <GuaikNet> system# @ website: https://bbs.guaik.org# @ email  : lutig.gu@gmail.com# **********************************系统测试:

安装requests库

pip istall requests

将项目根目录下的cliet.py文件复制到测试电脑,修改cliet.py中的https://localhost:8080,将其中的localhost改成你部署GuaikNet项目所在的服务器地址。

然后运行:pytho./cliet.py

如果返回WelcometouseGuaikNetsystem则说明系统运行正常。

使用说明

GuaikNet的工作目录有两个,分别是http请求的处理目录./works和rpc的工作目录./rpc。

HTTP请求协议:

示例:{"protocol":"jso","versio":"v1.01","actio":"guaik.welcome","cotet":{}}

protocol:请求协议选项:[jso,aes,rsa](当前只使用jso,aes加密和rsa加密方式还未加入)。

versio:版本号,如果客户端发起请求所使用的版本号与服务器当前版本号不同,服务端将不处理请求。

actio:需要调用的服务,命名规则是以works目录为根目录:子目录.文件名。以上面的请求"actio":"guaik.welcome"为例,将会调用guaik目录下模块名为welcome的处理函数。

cotet:该字段为自定义字段,按照服务端的开发文档填写。

HTTP处理例程:(./works/guaik/welcome.py)def hadler(data,ctx):    ctx.write("Welcome to use GuaiKNet system")

处理例程函数定义统一写成:defhadler(data,ctx):pass,否则无法被系统解析。

参数:data对应着客户端请求cotet字段

参数:ctxhttp请求的上下文,通过该对象的write方法可以向客户端返回处理结果。

RPC调用说明:需要安装RabbitMQ消息队列,一键安装脚本:

curl-s-orabbitmq.pyhttps://raw.githubusercotet.com/guaik/GuaikIstaller/master/rabbitmq.py&&pythorabbitmq.pyistall

RPC功能默认是关闭的,需要在./bootstrap.py文件中开启该功能:

server.active_rpc("rpc_host",5672,"/","userame","passwd")

找到该行,取消注释,填上消息队列的:(主机IP,主机端口,虚拟主机(vhost),用户名,密码)

RPC处理例程的默认目录为:./rpc

RPC处理例程调用规则:(以下是发送短信验证码的DEMO)from server.applicatio import gmrpc = gm.get("rpc")rpc.call("sms.sed_verify_code", "+8618888888888")

从全局对象管理器(gm)中取出rpc对象,使用rpc对象的call方法,第一个参数是rpc的方法名,之后所有的参数是rpc方法对应的参数列表。原型为: defcall(self,key,*args):...

方法名的规则是:模块名.函数名

RPC方法定义规则:(以./rpc/sms.sed_verify_code为例)

import loggigimport requestsimport jsofrom server.applicatio import gmrpc = gm.get("rpc")api_key = "your_api_key"api_secret = "your_secret"brad = "Guaik"@rpc.route()def sed_verify_code(umber):    request_id = Noe    try:        data = {"api_key":api_key,"api_secret":api_secret,"umber":umber,"brad":brad}        headers = {'Cotet-Type': 'applicatio/jso'}        r = requests.post("https://api.exmo.com/verify/jso",headers = headers, data = jso.dumps(data))        data = jso.loads(r.text)        if data["status"] == "0":            request_id = data["request_id"]    except Exceptio as e: loggig.error(e)    retur request_id

先从全局对象管理器gm中取出rpc对象,然后在sed_verify_code的上方加上@rpc.route()注解,这时候sed_verify_code将被注册到RpcMaager中,成为RPC处理例程。

其他说明:./bootstrap.py:

LEVEL:当前服务器日志级别,作为Server的初始化参数传入。

CUR_VERSION:当前解析器的版本号,作为Aalysis的参数传入,用于判断客户端发送的请求版本是否正确。

server.ge_http_process(8080,1,Aalysis(CUR_VERSION)):以上代码生成http服务进程,默认监听8080端口。1代表启动一个进程,如果该参数为4,则启动4进程依次监听8080,8081,8082,8083端口。第三个参数传入解析器对象,该对象用于解析客户端请求并调用对应的处理例程,在该例程中存放着请求与处理例程的映射关系。也可以自定义解析器对象,基类在./base/aalysis.py中。

server.start(False):这边的False表示不以守护进程运行,如果需要以守护进程运行,则修改成True即可,守护进程默认只在Liux系统中生效。

在./cofig目录下存放着可能会用到的配置文件,proxy.cof为Ngix反向代理的配置文件,可以修改它并将它放到/etc/gix/cof.d下,然后重启Ngix服务使其生效。可以通过监听多个服务端口,配合Ngix实现服务端的多进程处理。

upstream servers {    server localhost:8001;    server localhost:8002;    server localhost:8003;    server localhost:8004;}server {    liste 8080;    locatio / {        proxy_pass  https://servers;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_set_header X-Forwarded-Proto $scheme;        proxy_set_header Host $http_host;        proxy_set_header X-NgiX-Proxy true;        proxy_redirect off;        # Socket.IO Support        proxy_http_versio 1.1;        proxy_set_header Upgrade $http_upgrade;        proxy_set_header Coectio "upgrade";   }}

PS:打了这么多字应该会有错别字,欢迎纠正:lutig.gu@gmail.com

功能介绍

GuaikNet-怪客网络 可配置微服务的HTTP网络服务端程序 安装说明:(CentOS7) yum -y install epel-release
yum -y install git
...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论