背景:云服务器上有一个 JAVA 的服务用来处理各种信息的交互,当接收到信息后需要交由内网的一个 python 客户端来进行处理,处理后可以调用服务器告知处理结果
现状:
卡点: 目前卡在无法让本地的 FLASK 程序接收到服务端的消息
尝试:
敢问各位大佬有没有什么好用的技术方案,当然有个 demo 最好不过了
1
jalena 2023-02-23 16:01:33 +08:00
消息队列,整个消费者不是很合适么
|
2
touf 2023-02-23 16:28:29 +08:00
不能建立长连接那就内网客户端一直 http 轮询吧
|
3
HangoX 2023-02-23 16:33:01 +08:00
建立一个 zerotier 网络,就是虚拟局网,剩下直接用虚拟 ip 访问内网服务器即可
|
4
dearmymy 2023-02-23 16:44:27 +08:00
使用 celery
tailscale 这种异地组网对你来说,不知道算不算内网传透。 |
5
anaf 2023-02-23 16:47:35 +08:00
如果这样的话 只能使用中间件 flask 是可以用 websockets 的 不是 python demo.py 这样去运行 本地也需要使用 gunicorn 这类方式来运行的 这样才不会卡死
|
6
raycool 2023-02-23 16:57:32 +08:00
那就换 tornado 或者 fastapi
|
7
Asimov01 2023-02-23 17:02:22 +08:00
弄一个消息队列,云服务器的程序收到消息往队列里推消息,内网客户端监听这个队列,来消息了就处理。
|
8
5sheep 2023-02-23 17:02:36 +08:00
装个 vpn 组个虚拟局域网 最简单了。
|
9
Kinnice 2023-02-23 17:03:30 +08:00
VPN +1 ,不需要修改业务
|
10
VYSE 2023-02-23 17:12:48 +08:00
你都有公网 IP, 为啥不穿透啊
https://github.com/jayu/tcp-local-tunnel 把内网 flask 端口暴露给公网服务端 127.0.0.1:8000, 服务端直接 POST 就行了 |
11
Rxianbei 2023-02-23 17:18:19 +08:00
我是通过邮件服务轮询做的. 几秒钟一次轮询邮件服务器. 不优雅, 但能用
|
12
jones2000 2023-02-23 17:26:29 +08:00
客户端长连接服务器, 有消息就推送。ws,或 tcp 都可以呀。
|
13
777777 2023-02-23 17:42:18 +08:00
tcp,(g)rpc 长连接
|
14
Anybfans 2023-02-23 17:43:18 +08:00
websocket
|
15
Latin 2023-02-24 09:58:48 +08:00
https://blog.miguelgrinberg.com/post/add-a-websocket-route-to-your-flask-2-x-application
flask 浅浅升级下 不然就用 socketio |