python 框架
支持异步的 python web 框架
轻量级 flask 框架
import base64
import random
import io
import time
from flask import Flask, request
from flask_restful import reqparse, abort, Api, Resource
import json
app = Flask(__name__)
api = Api(app)
users = {
    "magigo":["123456"]
}
def gen_token(uid):
    token = base64.b64encode(bytes(''.join([str(uid), str(random.random()), str(time.time()+7200)]), encoding='utf-8'))
    users[uid].append(token)
    return token
def verify_token(token):
    _token = base64.b64decode(token)
    print(str(_token, encoding='utf-8'))
    if not users.get(str(_token, encoding='utf-8').split(':')[0])[-1] == token:
        return -1
    if float(_token.split(':')[-1]) >= time.time():
        return 1
    else:
        return 0
@app.route('/login', methods=['POST', 'GET'])
def login():
    auth = request.headers['Authorization'].split(' ')[-1]
    print('Authorization:\n',auth)
    uid, pw = str(base64.b64decode(auth), encoding='utf-8').split(':')
    print(uid)
    if users.get(uid)[0] == pw:
        return gen_token(uid)
    else:
        return 'error'
@app.route('/test', methods=['POST', 'GET'])
def test():
    token = request.args.get('token')
    if verify_token(token) == 1:
        return 'data'
    else:
        return 'invalid state!'
@app.route('/nlp/result/<queryString>', methods=['POST','GET'])
def get_nlp_result(queryString):
    print(queryString)
    result = dict(a='a',b='b')
    return json.dumps(result,ensure_ascii=False,indent=4)
parser = reqparse.RequestParser()
parser.add_argument('queryString',type=str)
class NLP_Result(Resource):
    def post(self):
        args = parser.parse_args()
        print(args)
        return dict(a='a', b='b')
    def get(self):
        self.post()
api.add_resource(NLP_Result,'/nlp/queryResult')
if __name__ == '__main__':
    app.run(debug=True,host='192.168.5.3')
import requests
def query_nlp_result(queryString):
    response = requests.get('http://192.168.5.3:5000/nlp/result/{}'.format(queryString))
    print(response.content.decode())
def login_req():
    response = requests.get('http://192.168.5.3:5000/login', auth=('magigo','123456'))
    print(response.text)
def verify_test():
    token = 'bWFnaWdvMC41OTAyODkzODc4MDg4MTA4MTU2NjMyNjg0OC4zODU3NDI3'
    response = requests.get('http://192.168.5.3:5000/test',params={'token':token})
    print(response.text)
if __name__ == '__main__':
    # query_nlp_result('how are you!')
    verify_test()
    login_req()
# 今日踩坑, flask 为何 端口占用不提示呀呀呀呀呀!!! damn!!!
netstat -ano|findstr "5000"
taskkill /pid 5000
使用 pipenv 进行包管理
常用参数及命令一览
 1 pipenv --where               列出本地工程路径
 2 pipenv --venv                列出虚拟环境路径
 3 pipenv --py                  列出虚拟环境的Python可执行文件
 4 pipenv install               安装包(创建虚拟环境)
 5 pipenv install moduel --dev  在开发环境安装包
 6 pipenv graph                 查看包依赖
 7 pipenv lock                  生成lockfile
 8 pipenv install --dev         安装所有开发环境包
 9 pipenv uninstall --all       卸载所有包
10 pipenv --rm                  删除虚拟环境
1 . cd yourproj
Pipfile
####################
[[source]]
url = "https://mirrors.aliyun.com/pypi/simple"
verify_ssl = true
name = "aliyun"
[dev-packages]
[packages]
cymysql = "*"
Flask-Cors = "*"
Flask-HTTPAuth = "*"
Flask-SQLAlchemy = "*"
Flask-WTF = "*"
requests = "*"
[requires]
python_version = "3.6"
#################
[[source]]
url = "https://pypi.douban/simple"
verify_ssl = true
name = "douban"
[dev-packages]
[packages]
requests = {version="*", index="douban"}
maya = {version="*", index="aliyun"}
records = "*"
pipenv install
# 安装完成之后呢执行 pipenv graph 查看安装结果
pipenv graph
pipenv --venv   # 查看 虚拟环境名称,在 pycharm 里要使用到
成熟企业级 Django 框架
python 框架的更多相关文章
- python框架之django
		python框架之django 本节内容 web框架 mvc和mtv模式 django流程和命令 django URL django views django temple django models ... 
- Python框架、库以及软件资源汇总
		转自:http://developer.51cto.com/art/201507/483510.htm 很多来自世界各地的程序员不求回报的写代码为别人造轮子.贡献代码.开发框架.开放源代码使得分散在世 ... 
- android模拟器(genymotion)+appium+python 框架执行基本原理(目前公司自己写的)
		android模拟器(genymotion)+appium+python 框架执行的基本过程: 1.Push.initDate(openid)方法 //业务数据初始化 1.1 v5db.p ... 
- 10个用于Web开发的最好 Python 框架
		Python 是一门动态.面向对象语言.其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性.除了语言本身的设计目的之外,Python标准 库也是值得大家称赞的,Python甚至还 ... 
- 第六篇:web之python框架之django
		python框架之django python框架之django 本节内容 web框架 mvc和mtv模式 django流程和命令 django URL django views django te ... 
- Python框架之Django学习
		当前标签: Django Python框架之Django学习笔记(十四) 尛鱼 2014-10-12 13:55 阅读:173 评论:0 Python框架之Django学习笔记(十三) 尛 ... 
- Hadoop的Python框架指南
		http://www.oschina.NET/translate/a-guide-to-Python-frameworks-for-Hadoop 最近,我加入了Cloudera,在这之前,我在计算生物 ... 
- 【python】Python框架、库和软件资源大全
		很多来自世界各地的程序员不求回报的写代码为别人造轮子.贡献代码.开发框架.开放源代码使得分散在世界各地的程序员们都能够贡献他们的代码与创新. Python就是这样一门受到全世界各地开源社区支持的语言. ... 
- Python框架之Django的相册组件
		Python框架之Django的相册组件 恩,没错,又是Django,虽然学习笔记已经结贴,但是学习笔记里都是基础的,Django的东西不管怎么说还是很多的,要学习的东西自然不会仅仅用十几篇博文就能学 ... 
- 10款Web开发最佳的Python框架
		Python是跻身于当代IT世界最流行和代码最高效的编程语言之一.Python框架能帮助你快速启动Web应用. 1.CubicWeb CubicWeb的最重要的功能是其代码的可重用性,由一个个代码单元 ... 
随机推荐
- 论文阅读:Flow-level State Transition as a New Switch Primitive for SDN
			Name of article:Flow-level State Transition as a New Switch Primitive for SDN Origin of the article: ... 
- [CSP-S模拟测试]:bird(线段树优化DP)
			题目传送门(内部题89) 输入格式 第一行两个数$n$和$k$,分别表示小鸟的只数和$R$装弹时间.接下来$n$行,每行两个数$l,r$表示$n$只小鸟初始时的头和尾的$x$坐标. 输出格式 输出一个 ... 
- Xdebug bad Zend API Version Number
			I am having trouble upgrading xdebug for MAMP. I was running version 2.2.0 and there was a known iss ... 
- (转)openssl 命令: openssl req 命令详解
			openssl req命令主要的功能有,生成证书请求文件, 查看验证证书请求文件,还有就是生成自签名证书.本文就主要记录一下open ... 
- shell脚本之结构化命令if...then...fi
			if的用法日常主要用于数值或者字符串的比较来实现结构化的,模拟人脑,就是如果遇到什么事情,我们应该做什么 语法格式分为 1. if command;then command;fi (如果if满足 ... 
- leetcode-mid- math-166. Fraction to Recurring Decimal
			mycode 73.92% 如何判断同号? 1)res = "-" if ((numerator>0) ^ (denominator>0)) else " ... 
- 【奇技淫巧】linux 定时任务 crontab 反弹 shell
			日期:2018-11-26 13:47:34 介绍:如何使用定时任务来反弹 shell? 0x01. 基本命令 参数 -e:编辑该用户的计时器设置: -l:列出该用户的计时器设置: -r:删除该用户的 ... 
- vue-router实现组件间的跳转---参数传递
			四.通过VueRouter来实现组件之间的跳转:参数的传递 login ---用户名--->main ①明确发送方和接收方②配置接收方的路由地址 {path:'/myTest',componen ... 
- text_to_be_present_in_element
			text_to_be_present_in_element(locator,text)是指定页面元素的文本位置, 一般用于验证一个文本信息或者错误的信息,我们任然以百度登录为案例, 用户名和密码为空, ... 
- Git push “fatal: Authentication failed ”
			Git push "fatal: Authentication failed " 问题原因 之前设置了两步验证 If you enabled two-factor authenti ... 
