写在前面的话
孩子都这样吗。昨天下午将近3点时,大宝给我打电话,说是弟弟把他的植物大战僵尸杂交版重置了,那是花了一个春节假期打出来的成就,哭的很伤心,大宝坚持让我回来找,久劝不下,我就回来了,正好抖哥没来图书馆。回来后,看了下账户重置了,里面的挑战模式里的东西,基本都还在,安抚了一下,才高兴起来。我在想,现在孩子都这么脆弱吗,暑假就上三年级了,还是个男孩,动不动就哭,并且是流眼泪的那种,不是假哭。过年和亲戚打电话,他们也提到自己孩子挑食,不吃饭,爱吃零食和外卖,这一点和我家大宝一样,老妈说,这离那么远,孩子之间通气了吗,表决一致,统一挑食。以前,家里包顿饺子或者家里来客,上集调几个菜,孩子眼馋的不行。现在大宝看都不看,吃了就吐。真是想不通啊。
[310]-------底部有张生活照片
【关键词】python、testing模块、debug内置库、流式接收
一、python接口相关(一级)
1.testing模块模拟请求(二级)
描述:现在想在testing模块进行一个模拟请求,现在请求的都是本地接口,怎么请求线上接口。
开工:
第一步:模推get请求(三级)
20250105周日时间段:10:55-11:00
20250105周日时间段:11:25-11:40
写程序如下:
def test_get_conversation2_online():
url = f"{CR.BASE_URL}/v1/api/conversation/d4cb055cc6b911efa21b0242ac120006"
log.info(f"\n\n url:{url} \n\n")
response = requests.get(url)
print(f"\n\n response--onLine:{response} \n\n")
注:这个跑一下,好像还是本地,邪门了。重启了一下电脑就好了。接下来,测online_completion
第二步:测online_completion(三级)
20250105周日时间段:12:07-12:20
修改代码如下:
图3a-1
注:这个不用client,而是用requests,看下能不能请求到线上代码。发现可以请求成功,并正确返回,截图如下:
图3a-2
注:说明这个测试用例写的没有问题,那同样的代码,测下本地,确认是不是本地哪个地方写错了。
第三步:测local_completion(三级)
20250105周日时间段:12:31-12:40
20250105周日时间段:12:40-13:00
test_local_completion报错:'WrapperTestResponse' object is not iterable,实际上代码中没有写iterable,重启下vscode试试。
重启后,运行,截图如下:
图3a-3
注:我知道了,这有没有可能是代码里报的,不是测试用例中报的。
经确定,确实是测试用例中报的,修改如下:
图3a-4
注:运行下试试。这个不是流式接收,有问题。接下来,用流式接收试试。
第四步:流式接收(三级)
20250105周日时间段:15:37-15:40
20250105周日时间段:15:40-16:00
用流式接收试试,截图如下:
图3a-5
注:这个模拟是流式的,如下:
图3a-6
注:线上这样写是能正常输出的,但本地不行。我突然想到,能不能本地不用测试模块了,也用requests进行模拟请求呢。
第五步:本地requests模拟请求(三级)
20250105周日时间段:16:17-16:20
20250105周日时间段:16:20-16:40
本地模拟requests请求,结果如下:
图3a-7
注:换成本地链接后,发现10分钟没运行结束,好慢,还是哪里出问题了。
先简化下测试用例,如下:
def test_online2_completion():
messages = [{"role":"user","content":"我家狗感冒了"}]
url = f"{base_url2}/v1/api/completion"
log.info(f"\n\n url:{url} \n\n")
resp = requests.post(
url,
json = json.dumps({
"conversation_id": "6c0ca0f6c3f611ef94e1f020ff63f4c4",
"messages": messages
}),
headers = {
"Content-type": "application/json",
"Authorization": "Bearer ragflow-UxOGYzZjUwYjMwOTExZWZiODc0MDI0Mm"
}
)
if not 200 <= resp.status_code < 300:
raise Exception(f"GET {url} status_code {resp.status_code}.")
log.info(f"\n\n resp:{resp} \n\n")
for chunk in resp:
if chunk:
log.info(f"\n\n chunk:{chunk} \n\n")
注:发现本地跑不起来,不知为什么。应该是对接收参数的处理有问题。
找到了错误的地方,如下:
图3a-8
注:跑一下,看看是不是这里。是这里,接下来捕捉一下,报错信息。
第六步:捕捉completion报错信息(三级)
20250106周一时间段:11:27-11:40
捕捉报错信息,修改代码片段如下:
except Exception as e:
log.debug(f"error {e}")
log.error(f"An error occurred: {traceback.format_exc()}")
log.error(f"An error occurred2: {repr(e)}")
注:经测试发现,【log.error(f"An error occurred: {traceback.format_exc()}") 】,这个能捕捉到异常,截图如下:
图3a-9
注:接下来,看下这个异常怎么处理。
第七步:处理异常(三级)
20250106周一时间段:11:35-11:40
20250106周一时间段:11:40-12:00
20250106周一时间段:22:29-22:40
最后,追踪到.venv里了,可能是.venv有问题,在线上发布试试,看看能不能解决这个问题。从而知道是不是本地出问题了。
线上没问题,本地报这个:
File \"e:\\16python\\12\\ragflow1203\\local_ragflow\\.venv\\Lib\\site-packages\\httpx\\_transports\\default.py\", line 86, in map_httpcore_exceptions\n raise mapped_exc(message) from exc\nhttpx.ConnectTimeout: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。\n", "reference": []}}
注:看下这个错误怎么回事,是ollama没连上。现在要记录一个事,就是如何把debug到内置库里去。
2.debug内置库(二级)
20250106周一时间段:22:32-22:40
描述:现在一个方法出问题了,要debug追踪,怎么追踪到内置库里去呢,这个龙哥已演示了一遍怎么做,要记录一下。
开工:
第一步:改配置(三级)
20250106周一时间段:22:35-22:40
先改下配置,配置文件为:
{
"type": "debugpy",
"request": "launch",
"name": "test_completion",
"module": "pytest",
"args": [
"-s",
"${workspaceFolder}/test/test_api_app2.py::test_completion"
],
"console": "integratedTerminal",
"env": {"PYTHONPATH": "${workspaceFolder}"},
"cwd":"${workspaceFolder}",
"justMyCode": false
}截图如下:
图3a-10
注:这个里面主要包含一个路径(/test/test_api_app2.py)及里面的方法名(test_completion),接下来,要演示一下怎么使用。
二、python练习(一级)
1.练习一(二级)
描述:Python 函数参数传递
程序如下:
def func(x, y=[]):
y.append(x)
return y
result1 = func(10)
result2 = func(20, [])
result3 = func(30)
print(result1, result2, result3)
A. [10, 30] [20] [10, 30]
B. [10] [20] [30]
C. [10, 30] [20] [10, 30]
D. [10] [20] [10]
开工:
第一步:输出
以上程序输出什么,目测是A
第二步:分析
Python 的默认参数(如 y=[])在函数定义时只初始化一次,因此 y=[] 是一个持久的对象。
result1 和 result3 使用了同一个默认的空列表,而 result2 创建了一个新的列表,不受默认参数影响。
result1 = func(10),y 为 [10]。
result3 = func(30),y 为 [10, 30]。
注:这个没太理解,先这样记吧。
三、生活照片
拍摄于2026年1月1日,13:31:57,带孩子去河北古北水镇玩,当时大宝八岁一个月,二宝三岁三个月。总体感觉现在的孩子很脆弱,之前,我们那一代,父母只关心孩子能否吃饱,是否逃学,不听话棍棒伺候。现在孩子,把大人气的不行,还没打呢,自己哭起来了,还死倔,有次我给大宝说,再这样,我打你了。大宝说,你打死我吧,反正还有我弟。这让我不知怎么接话,慢慢来吧,估计大了就好了。
图3c-1
《本文完》