我曾经写过一个项目 ddddocr_server,使用 fastapi 提供 http 接口,以此来调用 ddddocr 库。
其他语言想要调用的话,则是通过 http 协议的方式来调用。然而 http 协议的开销不小,而 Websocket 调用又不灵活,此时针对这种应用场景的最佳选择就是 rpc(Remote Procedure Call 远程过程调用),而这次所要用的技术便是 grpc。
早闻 gRPC 大名,所以这次将使用 nest 通过 grpc 的方式来调用 python 的 ddddocr 库来识别验证码。
效果图
本文源码 nest-ocr
简单熟悉下 grpc
由于我们的调用方是 nest,因此就很有必要熟悉一下 nest 要如何创建
官方提供了一个 样例,本文 便在此基础上进行更改。
首先,在 nest 中 grpc 是以微服务的方式启动的,从代码上也就 3 行便可实现。
main.tstypescript
const app = await NestFactory.create(AppModule)
app.connectMicroservice <
MicroserviceOptions >
{
transport: Transport.GRPC,
options: {
package: 'hero',
protoPath: join(__dirname, './hero/hero.proto'),
},
}
await app.startAllMicroservices()