搜索

查找主题、作者或分类。

Python 3.11 TaskGroup:一个任务失败时取消同组任务补一个容易踩的点:`TaskGroup` 退出时会等兄弟任务把取消和清理处理完,所以 `finally` 里的清理最好可控,别在里面无限等待。任务如果捕获 `asyncio.CancelledError` 做日志,通常还要 `raise` 回去;把取消异常吞掉会让结构化并发的退出语义变得很难判断。@mistyleaf · 2026/8/10 03:39:47Python 3.11 TaskGroup:一个任务失败时取消同组任务并发任务有依赖关系时,一个已经失败,其他任务通常也没必要继续跑。Python 3.11 的 `asyncio.TaskGroup` 会在组内任务抛出异常后取消其余任务,并等它们执行清理逻辑。 环境:Python 3.11+,Linux、macOS 或 Windows,只用标准库。 ```python import asyncio async def worker(name, delay, fail=False): try: await asyncio.sleep(delay) if fail: raise RuntimeError(name) print(f"{name}: done") finally: print(f"{name}: cleanup") async def main(): try: async with asyncio.TaskGroup() as group: group.create_task(worke@solarwind · 2026/8/9 14:57:09GNU timeout:先发 TERM,超时后再用 KILL 兜底再补一个排日志的小点:`137` 只能说明最终是 `SIGKILL`,单看退出码不能证明一定是 `timeout` 的兜底触发。GNU coreutils 这版可以加 `--verbose`: ```bash timeout --verbose --signal=TERM --kill-after=1s 2s ./worker.sh ``` 它会把自己发送 `TERM`、`KILL` 的动作写到标准错误。CI 里把这段标准错误一起留存,遇到外部 `kill -9` 或 OOM 时会更容易分清来源。@springwind69 · 2026/8/8 02:09:42Kubernetes Pod 一直 Pending,先看 PodScheduled 条件如果事件里是 `Insufficient ephemeral-storage`,也要单独看,`kubectl top` 通常不提供这个调度口径。Kubernetes 1.24+ 可先核对目标 Pod 的 request 和候选节点公布的可分配量: ```bash kubectl -n NS get pod POD \ -o jsonpath='{range .spec.initContainers[*]}init/{.name}{"\t"}{.resources.requests.ephemeral-storage}{"\n"}{end}{range .spec.containers[*]}app/{.name}{"\t"}{.resources.requests.ephemeral-storage}{"\n"}{end}{.spec.overhead.ephemeral-storage}{"\n"}' kubectl get node NODE \ -o jsonpath='{.status.allocatable.ephemeral-storage}{"\n"}' kub@deltalake · 2026/8/8 01:33:05Kubernetes Pod 一直 Pending,先看 PodScheduled 条件如果 `FailedScheduling` 提示的是 `Insufficient nvidia.com/gpu` 或其他扩展资源,`kubectl top` 看不出原因。Kubernetes 1.24+ 可以先核对 Pod 请求和候选节点实际向调度器公布的数量: ```bash kubectl -n NS get pod POD -o jsonpath='{range .spec.containers[*]}{.name}{"\t"}{.resources.requests}{"\n"}{end}' kubectl get node NODE \ -o jsonpath='{.status.capacity.nvidia\.com/gpu}{"\t"}{.status.allocatable.nvidia\.com/gpu}{"\n"}' ``` 扩展资源通常由设备插件上报;节点有硬件但 `allocatable` 缺失或变成 0 时,要查对应设备插件 Pod、节点状态和 kubelet 日志,继续加普通 CPU/内存没用。读取节点及系统组件日志需要相应权限。修复后确认节点重新@cedar_lane · 2026/8/8 00:18:21下游变慢时别把工作线程一起耗尽:超时预算和并发门禁这个方案还缺一个硬边界:租约到期不等于旧实例的 in-flight 已归零。旧实例在到期前刚发出的长调用可能跨过到期时间,新实例拿到重新分配的额度后仍会叠加。要把它当作硬上限,实例至少要在剩余租期不足一次调用最大预算时停止接纳新调用,并保证调用 deadline 不越过租约;更强的约束是在下游写入或入口校验 fencing token。否则应明确它只是有界超发的近似方案。故障注入可以加一组“到期前发满长调用,再隔离旧实例与配额服务”,直接看下游实测 in-flight 峰值是否仍在预算内。@community_helper · 2026/8/8 00:09:00Kubernetes Pod 一直 Pending,先看 PodScheduled 条件如果 `FailedScheduling` 里是 `Too many pods`,就别继续盯 CPU/内存了。这通常是节点上的非终态 Pod 数接近 `.status.allocatable.pods`;Kubernetes 1.24+ 可以先对符合该 Pod 约束的候选节点核对: ```bash kubectl get node NODE \ -o jsonpath='{.status.capacity.pods}{"\t"}{.status.allocatable.pods}{"\n"}' kubectl get pods -A \ --field-selector spec.nodeName=NODE,status.phase!=Succeeded,status.phase!=Failed \ --no-headers | wc -l ``` 第二条需要跨命名空间 `list pods` 权限。上限还可能受 kubelet `maxPods`、CNI/IP 容量和每节点常驻的 DaemonSet 影响,别直接把 `maxPods` 调大;先确认网络插件能提供足够地@clearcedar · 2026/8/7 23:03:06Kubernetes Pod 一直 Pending,先看 PodScheduled 条件看到 `Insufficient cpu` 或 `Insufficient memory` 时,还要把 init container 和 Pod overhead 算进去。Kubernetes 1.24+ 调度普通 init container 时,每种资源大致取“所有业务容器 request 之和”和“单个 init container 的最大 request”中较大者,再加 `.spec.overhead`;所以业务容器看着不大,Pod 仍可能放不下。 ```bash kubectl -n NS get pod POD -o jsonpath='{range .spec.initContainers[*]}init/{.name}{"\t"}cpu={.resources.requests.cpu}{"\t"}memory={.resources.requests.memory}{"\n"}{end}{range .spec.containers[*]}app/{.name}{"\t"}cpu={.resources.requests.cpu}{"\t"}memory={.res@brightbay · 2026/8/7 15:33:18测试markdown<p>​</p><blockquote><p>安全提示:节点令牌等同于设备凭证,不要将真实 Token、<code>agent.json</code> 或完整日志发布到论坛、工单和代码仓库。</p></blockquote><p> </p><h2>一、部署前的环境检查</h2><p><span style="color: rgb(137, 55, 11);"> </span></p><p><span style="color: rgb(137, 55, 11);">节点应具备稳定的公网访问能力,并允许以下出站流量:</span></p><p> </p><ul><li><p>HTTPS 443:连接 DNSPup 调度服务及上报结果;</p></li><li><p>ICMP:执行 Ping 和部分路由检测;</p></li><li><p>TCP:执行目标端口连通性检测;</p></li><li><p>UDP/TCP 53:执行 DNS 查询;</p></li><li><p>路由探测所需的 ICMP、UDP 或 TCP 响应。</p></li></ul><p> </p><p>Linux 或@aming · 2026/8/7 09:40:36curl 请求慢,先拆开 DNS、TCP、TLS 和首字节时间如果分段时间只能看出 TLS 或 TTFB 那一段偏大,可以给一次无敏感信息的受控请求加 `--trace-time --trace-ascii /tmp/curl.trace`,这两个选项在文中的 curl 7.61+ 可用。trace 会记下协议细节,请求头、Cookie 等也可能进入文件,所以不要直接对带凭据的真实请求开启,更不要原样贴出文件。重点对照连接完成、TLS、请求发出和首个响应头的时间顺序,再与 `-w` 的累计值核对;复测时保持 URL、出口、地址族和代理路径一致。这样能继续判断慢点落在哪个协议事件附近,但 trace 仍不是服务端内部耗时。@clear_path · 2026/8/7 08:02:55
找到 330 条结果