【Go-Zero】Windows启动rpc服务报错panic:context deadline exceeded解决方案
大家好 我是寸铁👊
总结了一篇Windows11下启动rpc服务报错panic解决方案的文章✨
喜欢的小伙伴可以点点关注 💝
问题来源
今天在编写完proto
文件后,使用goctl
生成对应的rpc
服务文件时,启动rpc
服务,发现panic
报错。
goctl命令
// rpc目录下创建
goctl rpc protoc user.proto --go_out=types --go-grpc_out=types --zrpc_out=.
报错信息
报错信息如下:
具体如下:
panic: context deadline exceeded
goroutine 1 [running]:
github.com/zeromicro/go-zero/zrpc.(*RpcServer).Start(0x28d3ec0?)
D:/Environment/GoWorks/pkg/mod/github.com/zeromicro/go-zero@v1.6.1/zrpc/server.go:89 +0x75
main.main()
D:/GoProject/zero_study/user/rpc/user.go:38 +0x299
exit status 2
排查
方法1
是不是其他进程的占用了启动rpc
服务的默认端口:2379
需要先把进程关闭,再启动服务。
必要时,重启电脑,试一下
方法2(优先尝试)
假如不是上面的原因引起的,则说明是因为etcd
服务没有启动!
为什么?
这里需要简单了解一下rpc
的原理
查阅一下官方文档
这说明使用goctl生成rpc服务时会默认向etcd注册中心注册当前服务的信息,也就是说etcd需要开启,才能接收到生成的rpc服务发送过来的信息!
在清楚这个原理后,只需要启动etcd
服务即可。
假如你还没有安装etcd
,那么需要先安装一下。
具体安装教程见这篇博客
如果你已经安装,那么需要手动打开一下
-
首先,找到你安装
etcd
的文件夹
-
接着,需要在路径框输入
cmd
- 最后,在启动的窗口中输入
etcd
即可
之后再回到goland去启动rpc
服务即可!
现在,就可以正常启动rpc
服务啦!
看到这里的小伙伴,恭喜你又掌握了一个技能👊
希望大家能取得胜利,坚持就是胜利💪
我是寸铁!我们下期再见💕
往期好文💕
【保姆级教程】Windows11下go-zero的etcd安装与初步使用
【保姆级教程】Windows11安装go-zero代码生成工具goctl、protoc、go-zero
【Go面试向】defer与time.sleep初探
【Go面试向】defer与return的执行顺序初探
【Go面试向】Go程序的执行顺序
【Go面试向】rune和byte类型的认识与使用
【Go面试向】实现map稳定的有序遍历的方式