You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JetBrains Gateway调试远程Gunicorn Python Web应用?

远程EC2+JetBrains Gateway调试Flask的解决方案(无静态IP)

核心思路

用ngrok把本地的调试监听端口映射到公网,让远程EC2上的JetBrains IDE实例能反向连接到本地调试服务,绕开静态IP缺失和ISP入站连接限制的问题。

操作步骤

1. 本地启动ngrok端口转发

  • 下载ngrok到本地并安装(对应自己系统的版本即可)
  • 打开本地终端,运行命令把PyCharm默认调试端口5678转到公网:
    ngrok tcp 5678
    
  • 运行后会得到一个公网地址,比如tcp://0.tcp.ngrok.io:12345,记下来这个域名(0.tcp.ngrok.io)和端口(12345)

2. 配置远程IDE的Python Debug Server

  • 在远程Gateway的Edit Configurations里新建/编辑Python Debug Server:
    • Host填刚才的ngrok公网域名,Port填对应的端口
    • 复制配置面板里的那段调试代码(就是带pydevd_pycharm.settrace的那行)

3. 在Flask代码里加调试触发

  • 找到Flask入口文件(比如app.py),在启动代码前插入复制的调试代码,最好加个判断避免影响生产:
    if __name__ == '__main__':
        # 调试用,生产环境注释掉
        import pydevd_pycharm
        pydevd_pycharm.settrace('0.tcp.ngrok.io', port=12345, stdoutToServer=True, stderrToServer=True)
        app.run(host='0.0.0.0', port=5000)
    

4. 启动调试

  • 先在本地JetBrains客户端里启动刚才配置的Python Debug Server(点调试按钮)
  • 然后在远程IDE里启动Flask应用,这时候EC2会通过ngrok连到本地的调试服务
  • 接下来就跟本地调试一样,设断点、看变量、单步走都没问题

注意点

  • 每次重启ngrok,公网地址和端口都会变,要同步更新IDE配置和代码里的参数
  • 先在EC2上用telnet 0.tcp.ngrok.io 12345测下能不能连通,确保网络没问题
  • 如果用Gunicorn这类生产服务器,要把调试代码加到启动脚本里,或者确保进程能加载到调试逻辑

内容的提问来源于stack exchange,提问作者Nathan Wailes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 15:02:31