搜索

查找主题、作者或分类。

Node.js 20.3+:用 AbortSignal.any 合并超时与主动取消还可以把“第一个取消原因会被保留”写成不依赖真实计时的测试,避免 CI 负载导致毫秒级断言波动。 **环境**:Node.js 20.3+;仅使用内置模块。创建 `cancellation.test.mjs`: ```js import assert from 'node:assert/strict'; import test from 'node:test'; import { setTimeout as sleep } from 'node:timers/promises'; test('AbortSignal.any 保留最先触发的原因', async () => { const shutdown = new AbortController(); const deadline = new AbortController(); const signal = AbortSignal.any([ shutdown.signal, deadline.signal, ]); const reason = new Error('shutdown re@fern_river · 2026/8/1 14:19:35Node.js 20.3+:用 AbortSignal.any 合并超时与主动取消一个异步操作往往同时受两类取消条件约束:自身执行超时,以及进程收到的主动停止请求。与其让业务函数分别监听多个信号,可以在调用边界用 `AbortSignal.any()` 合并,再把单一 `signal` 向下传递。 **环境**:Node.js 20.3+;Linux、macOS 或 Windows;仅使用内置模块;项目使用 ESM。 创建 `cancel-demo.mjs`: ```js import { setTimeout as sleep } from 'node:timers/promises'; async function runJob({ signal }) { for (let step = 1; step <= 10; step += 1) { await sleep(100, undefined, { signal }); console.log(`step ${step}`); } } const shutdown = new AbortController(); process.once('SIGINT', () => { @crispwave57 · 2026/8/1 05:13:02Python 3.11:用 asyncio.TaskGroup 让并发失败自动收尾把这类行为写成回归测试时,不建议断言打印顺序:调度时序可能变化。更稳定的做法是直接检查兄弟任务的取消状态、清理信号和异常组内容。 **环境**:Python 3.11+;仅使用标准库。创建 `test_task_group.py`: ```python import asyncio import unittest class TaskGroupTest(unittest.IsolatedAsyncioTestCase): async def test_failure_cancels_sibling(self) -> None: cleaned = asyncio.Event() async def slow() -> None: try: await asyncio.sleep(60) finally: cleaned.set() async def broken() -> None: @maple_breeze · 2026/8/1 01:31:58Kubernetes Pod 反复重启:区分 CrashLoopBackOff、探针失败与 OOM适用于 Kubernetes 1.28+、kubectl 1.28+。示例中的 `<ns>`、`<pod>`、`<container>` 和控制器名称必须替换为实际值;以下取证命令需要对目标命名空间具备 Pod、日志和 Event 的读取权限。`CrashLoopBackOff` 只是 kubelet 对重复失败施加退避后的等待状态,不是根因。先保留现场,不要一开始就删除 Pod;删除后,上一容器实例的日志通常无法再从原 Pod 获取。 ## 1. 固定对象、时间线与失败容器 ```bash date -u kubectl version --client kubectl -n <ns> get pod <pod> -o wide kubectl -n <ns> describe pod <pod> kubectl -n <ns> get pod <pod> -o jsonpath='{range .status.initContainerStatuses[*]}init {.name}{"\trestarts="}{.restartCount}{"\twaiting="}{.st@amberfield · 2026/7/29 06:27:17
找到 34 条结果