您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python HTTP debuger

5b51 2022/1/14 8:21:32 python 字数 3834 阅读 522 来源 www.jb51.cc/python

我想设置一些调试命令(如import ipdb; ipdb.set_trace()),它将在jupyter中运行调试器(我必须运行HTTP服务器).有人知道这样的事吗?上下文:我有一个由调度程序处理的长时间运行的任务(不是交互模式).我希望能够以同样的方式运行它来调试这样的任务.最佳答案 I need to run code in 'detached'

概述

我想设置一些调试命令(如import ipdb; ipdb.set_trace()),它将在jupyter中运行调试器(我必须运行HTTP服务器).
有人知道这样的事吗?

上下文:我有一个由调度程序处理的长时间运行的任务(不是交互模式).我希望能够以同样的方式运行它来调试这样的任务.

I need to run code in “detached” (not interactive). And when some
error is detected I would like to run debugger. That’s why I’ve been
thinking about remote debugger/jupyter notebook or whatever. So – by
default there is no debugging session – so I think that PyCharm remote
debugger is not a case.

与您在此处的想法相反,您并不需要在“调试会话”中运行代码来使用远程调试.

请尝试以下方法

>在Python环境中为“分离”代码安装pydevd:

pip install pydevd

>在该代码中的地方,否则你将使用pdb.set_trace,写

import pydevd; pydevd.settrace('your-debugger-hostname-or-ip')

现在,只要您的代码遇到pydevd.settrace指令,它就会尝试连接到您的调试器服务器.

然后,您可以从Eclipse PyDev或Pycharm中启动调试器服务器,并将“跟踪”进程连接到您准备好进行调试.阅读here了解更多详情.

当然,由您决定在连接超时的情况下要做什么 – 您可以让您的进程在循环中永远等待调试器,或者在某个时刻放弃.这是一个似乎对我有用的示例(在远程Linux机器上运行服务,通过SSH与远程端口转发连接,通过Windows下的Eclipse PyDev启动本地调试服务器)

import pydevd
import socket
from socket import error

def wait_for_debugger(ex,retries=10):
    print("Bam. Connecting to debugger Now...")
    while True:
        try:
            pydevd.settrace()
            break
        except SystemExit:
            # pydevd raises a SystemExit on connection failure somewhy
            retries -= 1
            if not retries: raise ex
            print(".. waiting ..")

def main():
    print("Hello")
    world = 1
    try:
        raise Exception
    except Exception as ex:
        wait_for_debugger(ex)

main()

但是,在启用端口转发之前,您似乎应该启动本地调试服务器.否则settrace无限地挂起,显然相信它已经“连接”了,而实际上并没有.

似乎有一个名为rpcpdb的小项目具有类似的目的,但是我无法开箱即用,因此无法评论太多(我相信在IDE中单步执行代码会更方便无论如何).

总结

以上是编程之家为你收集整理的Python HTTP debuger全部内容,希望文章能够帮你解决Python HTTP debuger所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶