Sentry 开发者贡献指南 - 配置 PyCharm

概述

如果您使用 PyCharm 进行开发,则需要配置一些内容才能运行和调试。

本文档描述了一些对 sentry 开发有用的配置

配置

Python 解释器:(确保它是 venv 解释器)例如 ~/venv/sentry/bin/python

1-PyCharmPyInterpreter.png

要创建配置(run/debug 配置),只需转到 Run | Edit Configurations...(也可在默认工具栏中使用)。

2-AddConfiguration.png

Test runner

Sentry 使用 pytest 进行单元测试。

创建 pytest 配置(在 Python tests 下)

设定目标(Set Target): Custom

附加参数(Additional Arguments): tests/sentry

3-AddPytestConfiguration.png

具有所需一切的 Dev server

用于在所有设置(webworkercron)的情况下运行(非调试):

  • 创建另一个 Python 配置
  • 脚本路径(Script path): <venv dir>/bin/sentry e.g. ~/venv/sentry/bin/sentry
  • 参数(Parameters): devserver --workers
  • Python 解释器(Python interpreter): venv interpreter
  • 工作目录(Working dir): (sentry 安装目录中的 src 路径) e.g. ~/dev/sentry/src

Note: 您将无法使用此配置调试 Web WorkerWeb Worker 是通过调用 uwsgi 服务器启动的)。

4-PyCharmPyInterpreter-1.png

使用 PyCharm 进行调试

devserver 命令的存在主要是为了在单独的进程中生成守护进程,这意味着在默认模式下将 debugger 附加到它并不是很有用。

Web server

devserver 命令有一个特殊的标志,它将导致 web server 在同一进程的线程中启动(而不是作为 web 守护进程)。这允许启动 devserver 的相同 PyCharm "Debug" 动作附加到 web server 并在其后端命中断点。

克隆你的 devserver 运行配置并将 --debug-server 添加到 "Parameters" 字段的末尾。通过选择 "Debug" 而不是 "Run" 来启动它。

--debug-server 标志可能会导致进程无法正确响应 SIGINT 并且关闭得比原始配置更不优雅。建议保留两者,将第一个与 Run 命令一起使用,将第二个与 Debug 命令一起使用。

您可以将 --workers 标志与 --debug-server 一起保留,但请注意,不可能将断点附加到 workers ,也不能附加到由 devserver 产生的任何其他守护进程。

独立守护进程

要将 debugger 附加到除 web 之外的单个守护程序,请为守护程序创建运行配置。以下属性应与您的 devserver 配置相同。(您可以克隆它并仅更改 Parameters 字段。)

  • 脚本路径(Script path): <venv dir>/bin/sentry,例如: ~/venv/sentry/bin/sentry
  • Python 解释器(Python interpreter): venv interpreter
  • 工作目录(Working dir): (sentry 安装目录中的 src 路径)例如 ~/dev/sentry/src

将新运行配置的参数设置为启动守护程序的 run 命令,例如:

  • run cron
  • run worker -c 1

提示和故障排除

  • 如果您想调试它,相同的一组修改将适用于 getentry 项目的运行配置。
  • PyCharmCompound 运行配置类型对于一次启动多个运行配置很有用。如果您正在调试一个或多个与开发服务器协同的独立守护进程,那么设置一个可能会很方便。

6-DevserverLeetSetup.png

  • 如果您希望 Sentry 在调试环境中的行为不同于常规运行中的行为,您可以添加任意环境变量,然后在您的 .sentry/sentry.conf.py 文件中检查它们。

例如,下面的屏幕截图显示了调试时禁用 APM 采样的设置(因为在断点处停止会污染时间测量)。请注意,PYCHARM_DEBUG 是一个任意名称;它对 PyCharmSentry 没有特殊意义。

7-PycharmRunConfigEnvVar.png

  • 如果您单独运行的守护进程不工作,您可以通过调试 devserver --debug-server 并在 src/sentry/runner/commands/devserver.py 上插入断点来进行故障排除。 这将让您手动检查 devserver 命令正在运行的命令。(在底部附近寻找 manager.add_process 调用。)尝试调整运行配置中的参数以匹配这些命令,如果它们还没有的话。

8-DevserverTroubleshooting.png

おすすめ

転載: juejin.im/post/7053452468725743623