背景:云服务器上有一个 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 sivl6p 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 |