调试 — Python 文档
来自菜鸟教程
Celery/docs/latest/userguide/debugging
调试
远程调试任务(使用 pdb)
基础知识
celery.contrib.rdb
是 pdb
的扩展版本,可以远程调试没有终端访问权限的进程。
用法示例:
set_trace()
在当前位置设置一个断点并创建一个套接字,您可以通过 telnet 远程调试您的任务。
调试器可以由多个进程同时启动,因此调试器不会使用固定端口,而是从基本端口(默认为 6900)开始搜索可用端口。 可以使用环境变量 CELERY_RDB_PORT
更改基本端口。
默认情况下,调试器只能从本地主机使用,要允许从外部访问,您必须设置环境变量 CELERY_RDB_HOST
。
当工作人员遇到您的断点时,它会记录以下信息:
如果您 telnet 指定的端口,您将看到一个 pdb shell:
输入 help
以获取可用命令列表,如果您之前从未使用过 pdb,最好阅读 Python 调试器手册。
为了演示,我们将读取 result
变量的值,更改它并继续执行任务:
我们故意破坏的结果可以在工人日志中看到:
小贴士
启用断点信号
如果设置了环境变量 CELERY_RDBSIG
,每当发送 SIGUSR2 信号时,worker 将打开一个 rdb 实例。 主进程和工作进程都是这种情况。
例如,以以下方式启动工作程序:
您可以通过执行以下命令为任何工作进程启动 rdb 会话: