线程池、API验证、json 扩展:支持时间序列化、restful API、Django REST framework

1、进程池

# 线程池 (python2 无线程池,只有进程池)
# 提高并发:线程、进程
import time # 线程池模块 # 进程池模块
from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor
p = ThreadPoolExecutor(10) # 表示最多开10个线程
p2 = ThreadPoolExecutor(10) # 表示最多开10个进程

def task(i):
time.sleep(1)
print(i)

# for row in range(100):
# p.submit(task,row) # 便会10个线程执行

 

2、API验证

# API 验证
# 创建动态 KEY: md5(key+time)|time
# 第一关: 超时时间
# 第二关: 算法规则
# 第三关: 已访问记录 2s 内

b1 = "1111"
print(len(b1))
print(b1[0:-1])

# https://github.com/sfbahr/PyCrypto-Wheels

# ############## AES 加密 #################
from Crypto.Cipher import AES

cipher = AES.new(key,AES.MODE_CBC,key) # 创建对象
data = '要加密的数据' # 要加密的字符串,必须是16分字节,或16个字节的倍数
ba_data = bytearray(data,encoding='utf-8') # 将字符串转化成直接并且可以修改
v1 = len(ba_data) # 加密数据的长度
v2 = v1 % 16 # 取余后还差多少长度
v3 = 16 - v2 # 获取到需要补充的长度
for i in range(v3):
ba_data.append(v3) # 只能填数字,这里填上自身长度便于后续取值

final_data = ba_data.decode('utf-8') # 将字节转换回字符串
msg = cipher.encrypt(final_data) # 进行加密,得到密文

# ############## AES 解密 #################
miwen = b'asdasdasdasdasda'
cipher = AES.new(key,AES.MODE_CBC,key)
result = cipher.decrypt(miwen) # 进行解密
data = result[0:-result[-1]]

 

3、json扩展:支持时间序列化

from datetime import datetime
from datetime import date
import json

class JsonCustomEncoder(json.JSONDecoder):
def default(self,value):
if isinstance(value,datetime):
return value.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(value,date):
return value.strftime('%Y-%m-%d')
else:
return json.JSONEncoder.default(self,value)

obj = "2018-02-12:12:22"
data = json.dumps(list(obj),cls=JsonCustomEncoder)



# 序列化数据库对象(对象形式序列化)
from django.core import serializers
obj = '对象'
data = serializers.serialize('json',data)

 

4、restful API 面向资源编程  or  Django rest framework

# restful  API
# 面向资源编程


# Django REST framework
# 基于 django开发的app,用于快速搭建 rest API

# 安装: pip3 install djangorestframework
# 注册APP : INSTALLED_APPS = [
# ……
# 'rest_framework',
# ]

# 注册路由:
# from rest_framework import routers
# from . import views
# router = routers.DefaultRouter()
# router.register(r'users',views.UserInfoViewSet)
#
# uplpatterns = [
# ……
# url(r'^',include(router.urls)),
# ]

# 写views 类
# from rest_framework import viewsets
# from . import models
# from . import serializers
#
# class UserInfoViewSet(viewsets.ModelViewSet):

 

posted @ 2018-06-28 10:56  G500  阅读(254)  评论(0)    收藏  举报