Sentry 開發者貢獻指南 - 配置 PyCharm

為少發表於2022-01-17

概述

如果您使用 PyCharm 進行開發,則需要配置一些內容才能執行和除錯。

本文件描述了一些對 sentry 開發有用的配置

配置

Python 直譯器:(確保它是 venv 直譯器)例如 ~/venv/sentry/bin/python

要建立配置(run/debug 配置),只需轉到 Run | Edit Configurations...(也可在預設工具欄中使用)。

Test runner

Sentry 使用 pytest 進行單元測試。

建立 pytest 配置(在 Python tests 下)

設定目標(Set Target): Custom

附加引數(Additional Arguments): tests/sentry

具有所需一切的 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 伺服器啟動的)。

使用 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 執行配置型別對於一次啟動多個執行配置很有用。如果您正在除錯一個或多個與開發伺服器協同的獨立守護程式,那麼設定一個可能會很方便。

  • 如果您希望 Sentry 在除錯環境中的行為不同於常規執行中的行為,您可以新增任意環境變數,然後在您的 .sentry/sentry.conf.py 檔案中檢查它們。
    例如,下面的螢幕截圖顯示了除錯時禁用 APM 取樣的設定(因為在斷點處停止會汙染時間測量)。請注意,PYCHARM_DEBUG 是一個任意名稱;它對 PyCharmSentry 沒有特殊意義。

  • 如果您單獨執行的守護程式不工作,您可以通過除錯 devserver --debug-server 並在 src/sentry/runner/commands/devserver.py 上插入斷點來進行故障排除。 這將讓您手動檢查 devserver 命令正在執行的命令。(在底部附近尋找 manager.add_process 呼叫。)嘗試調整執行配置中的引數以匹配這些命令,如果它們還沒有的話。

更多

相關文章