V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
baixixi
V2EX  ›  Python

如何让公网服务端实时发送消息到内网客户端,不使用内网穿透的方式

  •  
  •   baixixi · 2023-02-23 15:48:09 +08:00 · 2022 次点击
    这是一个创建于 665 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景:云服务器上有一个 JAVA 的服务用来处理各种信息的交互,当接收到信息后需要交由内网的一个 python 客户端来进行处理,处理后可以调用服务器告知处理结果

    • 现状:

      • python 技术不是特别好
      • PYTHON 程序是个 FLASK 后端
    • 卡点: 目前卡在无法让本地的 FLASK 程序接收到服务端的消息

    • 尝试:

      • websockets 无法在 flask 中后台运行,未找到适当解决方法

    敢问各位大佬有没有什么好用的技术方案,当然有个 demo 最好不过了

    15 条回复    2023-02-24 09:58:48 +08:00
    jalena
        1
    jalena  
       2023-02-23 16:01:33 +08:00
    消息队列,整个消费者不是很合适么
    touf
        2
    touf  
       2023-02-23 16:28:29 +08:00
    不能建立长连接那就内网客户端一直 http 轮询吧
    HangoX
        3
    HangoX  
       2023-02-23 16:33:01 +08:00
    建立一个 zerotier 网络,就是虚拟局网,剩下直接用虚拟 ip 访问内网服务器即可
    dearmymy
        4
    dearmymy  
       2023-02-23 16:44:27 +08:00
    使用 celery
    tailscale 这种异地组网对你来说,不知道算不算内网传透。
    anaf
        5
    anaf  
       2023-02-23 16:47:35 +08:00
    如果这样的话 只能使用中间件 flask 是可以用 websockets 的 不是 python demo.py 这样去运行 本地也需要使用 gunicorn 这类方式来运行的 这样才不会卡死
    raycool
        6
    raycool  
       2023-02-23 16:57:32 +08:00
    那就换 tornado 或者 fastapi
    Asimov01
        7
    Asimov01  
       2023-02-23 17:02:22 +08:00
    弄一个消息队列,云服务器的程序收到消息往队列里推消息,内网客户端监听这个队列,来消息了就处理。
    5sheep
        8
    5sheep  
       2023-02-23 17:02:36 +08:00
    装个 vpn 组个虚拟局域网 最简单了。
    Kinnice
        9
    Kinnice  
       2023-02-23 17:03:30 +08:00
    VPN +1 ,不需要修改业务
    VYSE
        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 就行了
    Rxianbei
        11
    Rxianbei  
       2023-02-23 17:18:19 +08:00
    我是通过邮件服务轮询做的. 几秒钟一次轮询邮件服务器. 不优雅, 但能用
    jones2000
        12
    jones2000  
       2023-02-23 17:26:29 +08:00
    客户端长连接服务器, 有消息就推送。ws,或 tcp 都可以呀。
    777777
        13
    777777  
       2023-02-23 17:42:18 +08:00
    tcp,(g)rpc 长连接
    Anybfans
        14
    Anybfans  
       2023-02-23 17:43:18 +08:00
    websocket
    Latin
        15
    Latin  
       2023-02-24 09:58:48 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3338 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:38 · PVG 19:38 · LAX 03:38 · JFK 06:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.