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

概述
如果您使用 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
用于在所有设置(web、worker、cron)的情况下运行(非调试):
- 创建另一个
Python配置 - 脚本路径(
Script path):<venv dir>/bin/sentrye.g.~/venv/sentry/bin/sentry - 参数(
Parameters):devserver --workers - Python 解释器(
Python interpreter):venv interpreter - 工作目录(
Working dir): (sentry 安装目录中的src路径) e.g.~/dev/sentry/src
Note: 您将无法使用此配置调试 Web Worker(Web 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 cronrun worker -c 1
提示和故障排除
- 如果您想调试它,相同的一组修改将适用于
getentry项目的运行配置。 PyCharm的Compound运行配置类型对于一次启动多个运行配置很有用。如果您正在调试一个或多个与开发服务器协同的独立守护进程,那么设置一个可能会很方便。

- 如果您希望
Sentry在调试环境中的行为不同于常规运行中的行为,您可以添加任意环境变量,然后在您的.sentry/sentry.conf.py文件中检查它们。
例如,下面的屏幕截图显示了调试时禁用APM采样的设置(因为在断点处停止会污染时间测量)。请注意,PYCHARM_DEBUG是一个任意名称;它对PyCharm和Sentry没有特殊意义。

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

更多
Sentry 开发者贡献指南 - 配置 PyCharm的更多相关文章
- Sentry 开发者贡献指南 - 数据库迁移
Django 迁移是我们处理 Sentry 中数据库更改的方式. Django 迁移官方文档:https://docs.djangoproject.com/en/2.2/topics/migratio ...
- Sentry 开发者贡献指南 - 后端服务(Python/Go/Rust/NodeJS)
内容整理自官方开发文档 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Map ...
- Sentry 开发者贡献指南 - SDK 开发(性能监控)
内容整理于官方开发文档 系列 Docker Compose 部署与故障排除详解 K8S + Helm 一键微服务部署 Sentry 开发者贡献指南 - 前端(ReactJS生态) Sentry 开发者 ...
- Sentry 开发者贡献指南 - SDK 开发(事件负载)
内容整理自官方开发文档 系列 Docker Compose 部署与故障排除详解 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentr ...
- Sentry 开发者贡献指南 - SDK 开发(性能监控:Sentry SDK API 演进)
内容整理自官方开发文档 本文档的目标是将 Sentry SDK 中性能监控功能的演变置于上下文中. 我们首先总结了如何将性能监控添加到 Sentry 和 SDK, 然后我们讨论 identified ...
- Sentry 开发者贡献指南 - Feature Flag
功能 flag 在 Sentry 的代码库中声明. 对于自托管用户,这些标志然后通过 sentry.conf.py 进行配置. 对于 Sentry 的 SaaS 部署,Flagr 用于在生产中配置标志 ...
- Sentry 开发者贡献指南 - Django Rest Framework(Serializers)
Serializer 用于获取复杂的 python 模型并将它们转换为 json.序列化程序还可用于在验证传入数据后将 json 反序列化回 Python 模型. 在 Sentry,我们有两种不同类型 ...
- Sentry 开发者贡献指南 - 前端 React Hooks 与虫洞状态管理模式
系列 Sentry 开发者贡献指南 - 前端(ReactJS生态) Sentry 开发者贡献指南 - 后端服务(Python/Go/Rust/NodeJS) 什么是虫洞状态管理模式? 您可以逃脱的最小 ...
- Sentry 开发者贡献指南 - 前端(ReactJS生态)
内容整理自官方开发文档 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Map ...
随机推荐
- Spring5 概述及Spring IOC学习
Spring Framework 5 1. Spring框架 1.1 Spring框架概述 1.2 主要内容 Spring框架是一个开源的JavaEE的应用程序 主要核心是 IOC(控制反转)和AOP ...
- 这样学习ZooKeeper离大厂所需技能要求还远吗
概述 定义 Apache ZooKeeper是一种用于构建分布式应用的高性能.高度可靠.开源的分布式协调服务,提供如配置信息维护.命名.分布式同步.组服务等功能,可以实现如分布式共识.组管理.领导选举 ...
- CF710C Magic Odd Square 题解
Content 构造出一个 \(n\times n\) 的矩阵,使得这个矩阵由 \(1\sim n^2\) 这些数字组成,并且这个矩阵的每行,每列,以及对角线的和都为奇数. 数据范围:\(1\leqs ...
- vnc mirror driver
2012年4月,大二下学期,平静的课堂上老师通知了一个比赛...第一届大学生软件设计大赛!然后我选了第六题:windows屏幕录像.就这样我就开始了我的vc开发生涯. 之前学了c/c++作为基础,自认 ...
- windows(Linux)创建”内网穿透“工具(通过自定义域名访问部署于内网的 web 服务,可以用于调试微信支付,支付宝支付,微信公众号等开发项目)
此方法需要自有服务器和域名,如果没有这些的开发者, 可以参考钉钉提供的内网穿透方式:https://www.cnblogs.com/pxblog/p/13862376.html 一.准备工作 1.域名 ...
- JAVA类初始化和实例初始化
一.类初始化过程 1.一个类要创建实例需要先创建和加载 (1) main方法所在的类需要先加载和实例化 2.一个子类要初始化,需要先初始化父类 3.一个类初始化就是执行<clinit>方法 ...
- 总结Vue第三天:模块化和webpack模块化打包:
总结Vue第三天:模块化和webpack模块化打包: 一.❀ 模块化 [导入import-----导出export] 1.为什么需要模块化? JavaScript 发展初期,代码简单地堆积在一起,只要 ...
- 1109 01组成的N的倍数
1109 01组成的N的倍数 基准时间限制:1 秒 空间限制:131072 KB 给定一个自然数N,找出一个M,使得M > 0且M是N的倍数,并且M的10进制表示只包含0或1.求最小的M. ...
- Dev C++调用汇编
参考: https://blog.csdn.net/ljx0305/article/details/5831742 https://www.cnblogs.com/jokerjason/p/95786 ...
- Android开发 ListView(垂直滚动列表项视图)的简单使用
效果图: 使用方法: 1.在布局文件中加入ListView控件: <?xml version="1.0" encoding="utf-8"?> &l ...