支付宝签名配置验证

公私钥生成: https://docs.open.alipay.com/291/106130 进入ssh后 OpenSSL> genrsa -out app_private_key.pem 2048 #生成私钥 OpenSSL> pkcs8 -topk8 -inform PEM -in app_private_key.pem -outform PEM -nocrypt -out app_private_key_pkcs8.pem #Java开发者需要将私钥转换成PKCS8格式 OpenSSL> rsa -in app_private_key.pem ...

supervisor进程管理

以supervisor管理celery进程为例 一 安装supervisor 二 配置 三 启动和关闭 四 打开web监听 安装supervisor python3 无法直接使用pypi源安装, 使用 pip3 install git+https://github.com/Supervisor/supervisor 配置 生成默认的配置文件 echo_supervisord_conf > /etc/supervisord.conf 添加自定义配置 在生成的conf文件最后添加 [program:tiis_is_name] command=/home/wukt/.virtualenvs/p3.6/bin/celery worker ...

vim + tmux窗格平滑切换

再也不用担心无法一边打开vim一边运行终端命令了 推荐~/.vimrc和~/.tmux.conf配置, 以实现vim和tmux窗格的平滑切换 vimrc添加并安装 Plugin 'christoomey/vim-tmux-navigator' /.tmux.conf 添加: # Smart pane switching with awareness of Vim splits. # See: https://github.com/christoomey/vim-tmux-navigator is_vim="ps -o state= -o comm= -t ...

python多线程高级锁condition

多线程编程中如果使用Condition对象代替lock, 能够实现在某个事件触发后才处理数据, condition中含有的方法: – wait:线程挂起,收到notify通知后继续运行 – notify:通知其他线程, 解除其它线程的wai状态 – notifyAll(): 通知所有线程 – acquire和release: 获得锁和解除锁, 与lock类似, – enter和exit使得对象支持上下文操作: def __enter__(self): return self._lock.__enter__() def __exit__(self, *args): return self._lock.__exit__(*args) ...

上下文管理器类和上下文管理器装饰器

一. 什么是上下文管理器 二. 自定义一个上下文管理器类: 三. 使用contextmanager 四. 一个例子, sqlalchemy: 数据库的自动提交和回滚 一. 什么是上下文管理器 上下文管理器是在Python2.5之后加入的功能,可以在方便的需要的时候比较精确地分配和释放资源, with便是上下文管理器的最广泛的应用, 比如: with open("test/test.txt","w") as f: f.write("hello") 这上会比使用try:...finally:f.close方便的多. 二. 自定义一个上下文管理器类: class MyResource: # ...

更好的对象转字典

一. 方便但不完美的__dict__ 对象转字典用到的方法为__dict__. 比如对象对象a的属性a.name='wk', a.age=18, 那么如果直接将使用a.__dict__获得对应的字典的值为: {name: 'wk', aget:18}, 很方便, 但是也存在一些限制. 其不完美之处在于: 比如: class A(object): name = 'wukt' age = 18 def __init__(self): self.gender = 'male' ...

flask: 內置HttpException的rest风格改进

在api的设计中, 无论异常还是正常数据均需要服务器以json的格式返回, 为了对异常的统一管理, 同时为了后续更加方便的返回和验证数据, 我们自定义异常返回类. 设计异常数据的返回格式为: { "error_code": 999, "msg": "sorry, we make a mistake", "request": "POST /v1/client/register" } 异常值分别代表: 999 未知错误 1006 客户端错误 1007 服务器错误 ...

JWT vs Session

一. session 1.1 session对于服务器的开销 在传统的用户登录认证中,都是采用session方式。用户登录成功,服务端会保证一个session,当然会给客户端一个sessionId,客户端会把sessionId保存在cookie中,每次请求都会携带这个sessionId。cookie+session这种模式通常是保存在内存中,而且服务从单服务到多服务会面临的session共享问题,随着用户量的增多,开销就会越大 1.2 session对于服务扩展性的限制 用户认证之后,服务端做认证记录,如果认证的记录被保存在内存中的话,这意味着用户下次请求还必须要请求在这台服务器上,这样才能拿到授权的资源,这样在分布式的应用上,相应的限制了负载均衡器的能力。这也意味着限制了应用的扩展能力。 1.3 session+cookie认证方式存在的风险 CSRF: 因为是基于cookie来进行用户识别的, cookie如果被截获,用户就会很容易受到跨站请求伪造的攻击。 二. jwt(json web token) jwt的认证方式只需要服务端生成token,客户端保存这个token,每次请求携带这个token,服务端认证解析就可。 2.1 jwt生成的流程 客户端使用用户名和密码请求服务器 服务器验证后返回一个jwt 客户端存储jwt, 每次请求都会携带这个jwt 服务器验证jwt, 并返回数据 ...

我们立足于美利坚合众国,对全球华人服务,受北美法律保护