一种 http 1.1 转 gRPC 调用的网关

因为项目中需要对接多个 gRPC 微服务, 但 gRPC 写得太烦了, 不像 http 提供方法(method), 路径(path), 数据(data) 即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
import grpc
# 需要导入对应的模块
import helloworld_pb2
import helloworld_pb2_grpc

with grpc.insecure_channel('localhost:50051') as channel:
# 创建 stub, 实际上就是 client
stub = helloworld_pb2_grpc.GreeterStub(channel)
# 创建输入对象
request = helloworld_pb2.HelloRequest(name='you')
# 调用并返回输出
response = stub.SayHello(request)
print("Greeter client received: " + response.message)

阅读全文

喷喷3 自动涂鸦工具

以前总羡慕喷喷, 动森大佬们的涂鸦.

Lycoris Recoil

发现一个工具, 通过单片机模拟手柄操作来自动化的进行涂鸦.

阅读全文

protocol buffers 编码规则(二)

补充负数, 浮点数, 字符串, 嵌套结构的编码规则

负数

因为负数是用最高位表示符号位, 使用 varint 去编码会占用特别多的字节(10 字节), 所以 varint 不适合负数, 为了解决这个问题 pb 定义了 sint32, sint64 的类型, 先使用 ZigZag 编码, 再使用 varint 编码.

阅读全文

protocol buffers 编码规则(一)

gRPC 使用的 protocol buffers 编码在序列化方面比传统的 json, xml 更小巧, 更快速, 那么到底是什么做的呢?

1
2
3
message HelloRequest {
  string name = 1;
}

阅读全文

首次运行 Django

上文, 我们认识了一下 Django 项目下面的模块组成, 但目前这些模块只是一个个独立的 package 还没有组装, 下面我们来把上文示例的 polls package “安装” 到项目中, 并把项目运行起来.

首先, 我们需要让项目知道要 “安装” 哪些 app, 打开 myproj/settings.py, 找到 INSTALLED_APPS 选项:

阅读全文

Django 项目结构

让我们来学习一下 Django 的项目结构: Django 的项目并不需要手动创建, 官方文档会推荐你使用 Django 提供的 脚手架 创建:

1
2
# 在当前目录下创建一个名为 myproj 的 Django 项目
django-admin startproject myproj

阅读全文

Django 开发环境搭建

在开始开发 Django 项目前, 需要安装好开发环境:

  • 安装 Python
  • 安装虚拟环境(可选)
  • 安装 Django

阅读全文