如何使用在gunicorn上运行的pycharm 2.x调试flask.app

问题描述 投票:0回答:5

我正在开发一个 Flask.app,它使用 Web 套接字功能并安装了 flask-socket 来提供该功能。因此,flask-socket 开发人员推荐 gunicorn 作为 Web 服务器。我现在的问题是如何将pycharm的删除调试器与gunicorn连接起来以断点拦截执行。

python flask pycharm
5个回答
47
投票

Settings > Project Settings > Python Debugger

那里有一个选项可以启用“gevent 兼容调试”。

然后,进入调试器设置(快捷方式是通过工具栏,单击播放/调试图标附近的下拉菜单,然后选择“编辑配置”

将“脚本”设置为您的 virtualenv 的 Gunicorn 安装,例如:

/Users/iandouglas/.virtualenvs/defaultenv/bin/gunicorn

将“脚本参数”设置为类似的内容

-b 192.168.1.1:9000 app:yourappname
(假设您的主要启动脚本名为 app.py 并且您将其称为“yourappname”

“工作目录”将自动设置,否则将其设置为代码所在的位置:

/Users/iandouglas/PycharmProjects/MyExampleApp

我的gunicorn设置有一个单独的配置文件,它指定了主机/端口,但我仍然必须指定

-b 0.0.0.0:5001
参数来强制gunicorn绑定到我机器上端口5001上的所有IP。

附注

一个重要的步骤是按照here

指出的添加此环境变量
PYDEVD_USE_CYTHON=NO

12
投票

我的 PyCharm 2018.1.3 Professional 案例:

  1. 转到运行/调试配置 创建和编辑运行调试配置

  2. 选择新的“Python”配置

  3. 脚本路径:your_path_to_/venv/bin/gunicorn
  4. 参数(针对我的情况):
    -b :5001 --access-logfile - --error-logfile - "run:create_application()"
  5. Python 解释器:项目的 venv python 版本
  6. 工作目录:项目的路径
  7. 保存并按“调试”(Shift+F9)
  8. 要幸福!

8
投票

我尝试在 Pycharm 2020.2.1 上进行调试,即使启用了 Gevent 兼容调试,断点也无法正常工作。事实证明,我必须按照here所述设置环境变量来禁用 Cython 的运行配置才能使其正常工作。

PYDEVD_USE_CYTHON=NO

0
投票

接受的解决方案对我有用,但我面临着 myproject module not find 错误,这是通过使用解决的:

gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application

Pycharm ✅

而不是

gunicorn --bind 0.0.0.0:8000 'myproject.wsgi:application'

Pycharm❌


-3
投票
  • 编辑你的 Flask 启动 python 文件
$ vim manage.py
  • 删除调试选项设置
from web import app
import sys

if __name__ == '__main__':
    # app.run(host='0.0.0.0', port=app.config["PORT"], debug=app.config["DEBUG"])
    app.run(host='0.0.0.0', port=9998, debug=False)
© www.soinside.com 2019 - 2024. All rights reserved.