远程调试任务(pdb)


基础


celery.contrib.rdb 是 pdb 的一个扩展版本,它支持不通过终端访问就可以远程调试进程。

示例:

from celery import task
from celery.contrib import rdb @task()
def add(x, y):
result = x + y
rdb.set_trace() # <- set break-point
return result

set_trace() 函数在当前位置设置一个断点,并且创建一个网络套接字使得你可以 telnet 上去进行远程调试你的任务。

调试器可能被多个进程同时启动,但调试器不是使用一个固定端口而是从基端口开始寻找一个可用的端口(默认从6900端口开始)。基端口可以通过环境变量 CELERY_RDB_PORT 进行修改。

默认情况下,调试器只在本机可用,要让它可以从外面访问需要设置环境变量 CELERY_RDB_HOST。

当工作单元执行到你的断点,它将打出日下日志信息:

[INFO/MainProcess] Received task:
tasks.add[d7261c71-4962-47e5-b342-2448bedd20e8]
[WARNING/PoolWorker-1] Remote Debugger:6900:
Please telnet 127.0.0.1 6900. Type `exit` in session to continue.
[2011-01-18 14:25:44,119: WARNING/PoolWorker-1] Remote Debugger:6900:
Waiting for client...

如果你 telnet 到你声明的端口,你将进入一个 pdb shell:

$ telnet localhost 6900
Connected to localhost.
Escape character is '^]'.
> /opt/devel/demoapp/tasks.py(128)add()
-> return result
(Pdb)

键入 help 或者可用命令的列表,如果你以前没有使用过 pdb,你最好先看看python 调试文档。

为了说明问题,我们读取 result 变量的值,修改它并且继续执行任务:

(Pdb) result
4
(Pdb) result = 'hello from rdb'
(Pdb) continue
Connection closed by foreign host.

我们捣乱的结果可以从工作单元日志看到:

[2011-01-18 14:35:36,599: INFO/MainProcess] Task
tasks.add[d7261c71-4962-47e5-b342-2448bedd20e8] succeeded
in 61.481s: 'hello from rdb'

提示


启用断点信号


如果设置了 CELERY_RDBSIG 环境变量,当 SIGUSR2 信号发送时,工作单元将启动一个rdb实例。对工作单元主进程或者工作进程这都适用。

例如开启一个工作单元:

$ CELERY_RDBSIG=1 celery worker -l info

你可以通过给任何工作单元进程发送 USR2 信号开始一个 rdb 会话:

$ kill -USR2 <pid>

转自:https://blog.csdn.net/libing_thinking/article/details/78603252

Celery-4.1 用户指南: Debugging (调试)的更多相关文章

  1. scons用户指南翻译(附gcc/g++参数详解)

    scons用户指南 翻译 http://blog.csdn.net/andyelvis/article/category/948141 官网文档 http://www.scons.org/docume ...

  2. 【Flume NG用户指南】(1)设置

    作者:周邦涛(Timen) Email:zhoubangtao@gmail.com 转载请注明出处:  http://blog.csdn.net/zhoubangtao/article/details ...

  3. Android官方技术文档翻译——Gradle 插件用户指南(1-3)

    不知道是什么网络问题,上午一直发不了博客,其它页面基本正常,就是在写博客这里,每次打开都是响应超时.刚才用了VPN,顺便试了一下,竟然能够编辑.想是CDN之类的问题吧. 这次翻译的是Gradle 插件 ...

  4. 阿里云API网关(5)用户指南(调用 API)

    网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...

  5. 【翻译】Flume 1.8.0 User Guide(用户指南) Sink

    翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide 篇幅限制,分为以下5篇: [翻译]Flume 1.8.0 User Guide(用户指南) [翻译]Flum ...

  6. 【翻译】Flume 1.8.0 User Guide(用户指南)

    翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide 篇幅限制,分为以下5篇: [翻译]Flume 1.8.0 User Guide(用户指南) [翻译]Flum ...

  7. 《Apache Velocity用户指南》官方文档

    http://ifeve.com/apache-velocity-dev/ <Apache Velocity用户指南>官方文档 原文链接   译文连接 译者:小村长  校对:方腾飞 Qui ...

  8. Celery-4.1 用户指南: Calling Tasks(调用任务)

    基础 本文档描述 Celery 中任务实例和 Canvas 使用的统一 “Calling API”. API 中定义了一个执行选项的标准集,以及三个方法: - apply_async(args[, k ...

  9. flume1.9 用户指南(中文版)

    概述 Apache Flume是一个分布式,可靠且可用的系统,用于有效地从许多不同的source收集,聚合和移动大量日志数据到集中式数据存储. Apache Flume的使用不仅限于日志数据聚合.由于 ...

随机推荐

  1. 为什么可以Ping通IP地址,但Ping不通域名?

    能否ping通IP地址,与能否解析域名是两回事不能ping通IP地址,说明对方禁止ICMP报文或对方没有开机等解析域名只是将域名翻译成IP地址,不论该IP地址是否能够正常访问 问题是ping域名的时候 ...

  2. linux基础(5)-用户及权限

    用户与组 用户:使用linux时,需要以用户的身份登陆 组    :用来方便组织管理用户   用户种类 -root用户(ID为0的用户为root用户) -系统用户(1-499) -普通用户(500以上 ...

  3. Python之异常总结

    一.异常错误 a.语法错误 错误一: if 错误二: def text: pass 错误三: print(sjds b.逻辑错误 #用户输入不完整(比如输入为空)或者输入非法(输入不是数字) num= ...

  4. webdriver 选择

    You only need   from selenium import webdriver . Execute   html= browser.find_element_by_xpath(" ...

  5. MySql基础学习-总纲

  6. js中介者模式

    中介者模式(Mediator),用一个中介者对象来封装一系列对象交互.中介者使各对象不需要显示地相互引用,从而使其松散,而且可以独立地改变它们之间的交互. 从生活中例子自然知道,中介者模式设计两个具体 ...

  7. 解决:pycharm连接github报错 Can't login: Received fatal alert: protocol_version

    如图1,进行测试连接的时候报错了 知乎的一位网友给了答案,详情参见知乎pycharm连接github报错,如何解决? "" Github 最近升级过协议,可能是你的 JRE 或者 ...

  8. python3中的unicode_escape

    一. 响应的两种方式 在使用python3的requests模块时,发现获取响应有两种方式 其一,为文本响应内容, r.text 其二,为二进制响应内容,r.content 在<Python学习 ...

  9. Spring boot临时文件目录报错

    基本的错误信息如下: 2018-03-05 at 15:12:03 CST ERROR org.apache.juli.logging.DirectJDKLog 181 log - Servlet.s ...

  10. 如何手动添加 WIFI 网络步骤

    电脑手动添加WiFi网络步骤: 1.右键控制面板 2.进入控制面板 3.进入网络和Internet,点击设置新的连接或网络 4.点击手动连接到无线网络 5.输入网络SSID及秘钥 若需要自动连接请勾选 ...