Celery-4.1 用户指南: Debugging (调试)
远程调试任务(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 (调试)的更多相关文章
- scons用户指南翻译(附gcc/g++参数详解)
scons用户指南 翻译 http://blog.csdn.net/andyelvis/article/category/948141 官网文档 http://www.scons.org/docume ...
- 【Flume NG用户指南】(1)设置
作者:周邦涛(Timen) Email:zhoubangtao@gmail.com 转载请注明出处: http://blog.csdn.net/zhoubangtao/article/details ...
- Android官方技术文档翻译——Gradle 插件用户指南(1-3)
不知道是什么网络问题,上午一直发不了博客,其它页面基本正常,就是在写博客这里,每次打开都是响应超时.刚才用了VPN,顺便试了一下,竟然能够编辑.想是CDN之类的问题吧. 这次翻译的是Gradle 插件 ...
- 阿里云API网关(5)用户指南(调用 API)
网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...
- 【翻译】Flume 1.8.0 User Guide(用户指南) Sink
翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide 篇幅限制,分为以下5篇: [翻译]Flume 1.8.0 User Guide(用户指南) [翻译]Flum ...
- 【翻译】Flume 1.8.0 User Guide(用户指南)
翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide 篇幅限制,分为以下5篇: [翻译]Flume 1.8.0 User Guide(用户指南) [翻译]Flum ...
- 《Apache Velocity用户指南》官方文档
http://ifeve.com/apache-velocity-dev/ <Apache Velocity用户指南>官方文档 原文链接 译文连接 译者:小村长 校对:方腾飞 Qui ...
- Celery-4.1 用户指南: Calling Tasks(调用任务)
基础 本文档描述 Celery 中任务实例和 Canvas 使用的统一 “Calling API”. API 中定义了一个执行选项的标准集,以及三个方法: - apply_async(args[, k ...
- flume1.9 用户指南(中文版)
概述 Apache Flume是一个分布式,可靠且可用的系统,用于有效地从许多不同的source收集,聚合和移动大量日志数据到集中式数据存储. Apache Flume的使用不仅限于日志数据聚合.由于 ...
随机推荐
- java深入探究16-mybatis
链接:http://pan.baidu.com/s/1skJ4TNB 密码:koo9 1.引入mybatis jsbc简单易学,上手快,非常灵活构建SQL,效率高但代码繁琐,难以写出高质量的代码 hi ...
- 字符在内存中最终的表示形式是什么?是某种字符编码还是码位(Code Point)?
字符在内存中最终的表示形式是什么?是某种字符编码还是码位(Code Point)? 根据我的了解,编码中有三个核心概念:1. 字符集(Character Set),可以说是一个抽象概念,字符的合集2. ...
- vc 改变控制台字符颜色
#include <Windows.h> #include <stdio.h> #include <iostream> using namespace std; i ...
- Swagger自动生成接口文档
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
- css3表格样式
<caption> 关于表格存储内容的描述或总结. 1.border-spacing:0;border-spacing 属性设置相邻单元格的边框间的距离(仅用于“边框分离”模式). 2. ...
- AppCompatActivity和Activity的区别
1-首先是AppCompatActivity默认带标题,但Activity不带 2-而且AppCompatActivity和 requestWindowFeature(Window.FEATURE_N ...
- 计算机网络【七】:可靠传输的实现 (tcp窗口滑动以及拥塞控制)【转】
转自:http://blog.chinaunix.net/uid-26275986-id-4109679.html TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥 ...
- datatable绑定comboBox,在下拉菜单中显示对应数据
实现功能: datatable绑定comboBox,在下拉菜单中显示对应数据 实现方法: .生成datatable,并为combox绑定数据源: comboBox1.DataSource = dt1; ...
- CodeForces - 799B-T-shirt buying (优先队列)
题目链接 /* Name: Copyright: Author: Date: 2018/5/2 16:09:54 Description:优先队列 */ #include <iostream&g ...
- BEC translation exercise 2
Forest fires are a regular feature of Chile's hot, arid summers.智利夏天炙热.干燥,常发生森林火灾.A nearly decade-lo ...