接着上一节问
一个协程里面写了两次 await,两份工作会自动同时开始吗?先运行,再判断。
import asyncio
async def generate(rollout_id):
print("start", rollout_id)
await asyncio.sleep(0)
print("end", rollout_id)
return rollout_id
async def exercise():
first = await generate(10)
second = await generate(11)
print("results", [first, second])
if __name__ == "__main__":
asyncio.run(exercise())
下载并运行本节 example.py。只使用 Python 标准库;推荐 Python 3.12,最低 Python 3.11。
运行结果:
start 10
end 10
start 11
end 11
results [10, 11]
exercise() 要等第一份结果返回,才会走到第二个 generate。本节先读清这一条执行链:进入协程 → 等待 → 恢复 → 返回。
跟着第一份调用走一次
exercise()
│
├─ await generate(10):进入 generate 的函数体
│ ├─ 打印 start 10
│ ├─ await asyncio.sleep(0):当前执行链暂停一次
│ ├─ 恢复后打印 end 10
│ └─ return 10
│
├─ 第一份调用返回后,才进入 generate(11)
└─ 最后打印 results
await generate(10) 要等待整个 generate(10) 返回。内部的 await asyncio.sleep(0) 则是它执行过程中的一次等待;恢复后,先继续这一份 generate 剩下的代码。
因此,内部暂停过,不代表外层已经执行完这一行。第二行 await generate(11) 仍然要等第一行结束。
对比:保留赋值与去掉赋值
两组都使用最上面的同一个 generate()。
保留赋值:
async def with_assignment():
first = await generate(10)
second = await generate(11)
去掉赋值:
async def without_assignment():
await generate(10)
await generate(11)
两组输出完全相同:
A: with assignment
start 10
end 10
start 11
end 11
B: without assignment
start 10
end 10
start 11
end 11
first = 和 second = 只保存返回值。即使不保存,await 也要等这份调用返回后,才能继续下一行。
下载 comparison.py,运行这两组对比。这是独立的标准库语言实验,不是 Slime 原始源码。
暂停之后,为什么还是先完成 10
当前实验只有这一条执行链。第二个 generate 还没开始,不能因为第一份内部暂停,就自动提前运行第二行。
这里的 sleep(0) 让出一次后可以很快恢复;如果换成 sleep(1),即使没有其他工作,也要等计时条件满足。没有别的工作可运行,不等于这次等待被跳过。
等待时间与代码执行要分开看
对于
await asyncio.sleep(...),等待时间继续流逝,但当前协程的代码暂时不向下执行。
await asyncio.sleep(2)
print("继续执行")
这两秒里,协程停在 await,还不会执行后面的 print。这叫挂起,不是退出或终止;也不是函数体在后台继续跑。
两秒到了,只是满足了继续执行的条件。还要轮到这个协程获得执行机会,后面的 print 才会运行。其他代码执行所消耗的时间,不会让这次 sleep 的等待重新计时。
下一节再学习怎样安排另一份工作。在学到那里之前,先不要求从本实验中看出交错执行。
不只有 sleep 才能暂停
关键是等待的操作是否需要暂停,而不是函数名叫不叫 sleep。asyncio.sleep() 本身也是协程;网络读取等异步操作也可能需要等待。反过来,协程如果一路执行到 return,没有遇到需要暂停的操作,也可以直接返回。
因此,看见 await 时先问两件事:
- 这一行要等谁的返回结果?
- 被等待的代码内部,在哪里需要暂停?
回到 Slime:等待完成标记
_await_done_marker() 会先等待一段时间,再读取外部命令的完成标记。如果标记还没出现,就继续下一轮;读取成功时才返回退出码。
这里只关注三处顺序:await asyncio.sleep(5)、await sb.exec(...)、return。sb.exec 是执行环境提供的异步操作,具体实现在后续源码阅读时展开。
展开 Slime 源码:_await_done_marker 的等待与返回
_await_done_markerslime/agent/sandbox.py · L73–L79
快照 2f2318653f6f794dddd321eff7c9d4b7b174643f· 查看固定版本源码
deadline = time.time() + time_budget_sec
while time.time() < deadline:
await asyncio.sleep(5)
ec, out, _ = await sb.exec(f"test -f {done_file} && cat {done_file}", user=user, timeout=15, check=False)
if ec == 0 and (out or "").strip():
return int(out.strip())
return EXIT_TIME_BUDGET_EXCEEDED用自己的话回答
第一份 generate 内部等待过,为什么第二份还没有开始?去掉 first = 会改变顺序吗?
查看解释
内部等待只是第一份调用执行过程中的暂停。第一份还没返回,外层就还没执行到第二行。赋值只保存结果,去掉它不改变直接 await 的先后顺序。
本节对应的全部源码位置
下面把同类用法在 Slime 中的每个扫描位置接回本节讲解;点击文件名可查看完整源码快照。重复出现的 API 共用解释,具体输入与清理由所在函数决定。
展开本节 442 条源码记录
| 记录 / 讲解 | 源码位置 | 原代码 |
|---|---|---|
| occ-000009 | examples/coding_agent_rl/generate.py:109 boot_agent_sandbox | await cand.__aenter__() |
| occ-000011 | examples/coding_agent_rl/generate.py:111 boot_agent_sandbox | await HARNESS_CLS().install_cli(cand) |
| occ-000012 | examples/coding_agent_rl/generate.py:113 boot_agent_sandbox | await cand.__aexit__(None, None, None) |
| occ-000014 | examples/coding_agent_rl/generate.py:127 boot_agent_sandbox | await asyncio.sleep(1 + attempt + random.random()) |
| occ-000015 | examples/coding_agent_rl/generate.py:127 boot_agent_sandbox | await asyncio.sleep(1 + attempt + random.random()) |
| occ-000017 | examples/coding_agent_rl/generate.py:134 boot_agent_sandbox | await sb.__aexit__(None, None, None) |
| occ-000023 | examples/coding_agent_rl/generate.py:204 generate | await swe.prepare_workspace(sb, md["workdir"], md) |
| occ-000024 | examples/coding_agent_rl/generate.py:205 generate | agent_exit_code = await HARNESS_CLS().run( |
| occ-000025 | examples/coding_agent_rl/generate.py:213 generate | diff_text = await swe.git_diff(sb, md["workdir"]) |
| occ-000026 | examples/coding_agent_rl/generate.py:215 generate | reward, applied_cleanly = await swe.run_evaluation( |
| occ-000027 | examples/coding_agent_rl/generate.py:237 generate | samples = await state.adapter.finish_session( |
| occ-000029 | examples/coding_agent_rl/generate.py:282 generate | await state.adapter.drop_session(session_id, wait_timeout=30) # cleanup only, idempotent |
| occ-000030 | examples/coding_agent_rl/generate.py:283 generate | await asyncio.sleep(10) |
| occ-000031 | examples/coding_agent_rl/generate.py:283 generate | await asyncio.sleep(10) |
| occ-000072 | examples/coding_agent_rl/swe.py:185 prepare_workspace | await agent_sandbox.ensure_agent_user(sb, workdir) |
| occ-000076 | examples/coding_agent_rl/swe.py:190 prepare_workspace | await apply_before_repo_set_cmd(sb, workdir, swepro) |
| occ-000078 | examples/coding_agent_rl/swe.py:193 prepare_workspace | await apply_pre_commands(sb, workdir, pre_commands) |
| occ-000079 | examples/coding_agent_rl/swe.py:194 prepare_workspace | await sb.write_file( |
| occ-000083 | examples/coding_agent_rl/swe.py:207 apply_before_repo_set_cmd | await sb.exec( |
| occ-000084 | examples/coding_agent_rl/swe.py:210 apply_before_repo_set_cmd | await sb.write_file("/workspace/swepro_setup/before.sh", payload, user="agent") |
| occ-000085 | examples/coding_agent_rl/swe.py:211 apply_before_repo_set_cmd | await sb.exec("bash /workspace/swepro_setup/before.sh", user="agent", check=False, timeout=600) |
| occ-000088 | examples/coding_agent_rl/swe.py:223 apply_pre_commands | await sb.write_file(_PRE, "set -e\n" + body, user="agent") |
| occ-000089 | examples/coding_agent_rl/swe.py:224 apply_pre_commands | await sb.exec(f"chmod 755 {_PRE} && cd {workdir} && bash {_PRE}", user="agent", check=False, timeout=600) |
| occ-000091 | examples/coding_agent_rl/swe.py:232 git_diff | _, out, _ = await sb.exec(cmd, user="agent", timeout=120) |
| occ-000094 | examples/coding_agent_rl/swe.py:246 run_evaluation | return await _grade_swebench(md, diff_text, timeout_sec) |
| occ-000095 | examples/coding_agent_rl/swe.py:247 run_evaluation | return await _grade_scaleswe(md, diff_text, timeout_sec) |
| occ-000103 | examples/coding_agent_rl/swe.py:270 _grade_scaleswe | await agent_sandbox.ensure_agent_user(ev, workdir) |
| occ-000104 | examples/coding_agent_rl/swe.py:272 _grade_scaleswe | await _setup_swepro_assets(ev, swepro) |
| occ-000105 | examples/coding_agent_rl/swe.py:273 _grade_scaleswe | await apply_before_repo_set_cmd(ev, workdir, swepro) |
| occ-000106 | examples/coding_agent_rl/swe.py:275 _grade_scaleswe | await apply_pre_commands(ev, workdir, pre_commands) |
| occ-000107 | examples/coding_agent_rl/swe.py:277 _grade_scaleswe | applied = await _apply_diff(ev, workdir, diff_text) |
| occ-000108 | examples/coding_agent_rl/swe.py:282 _grade_scaleswe | r = await _run_swepro(ev, workdir, swepro, timeout_sec) |
| occ-000109 | examples/coding_agent_rl/swe.py:284 _grade_scaleswe | r = await _run_eval_cmd(ev, workdir, eval_cmd, timeout_sec) |
| occ-000110 | examples/coding_agent_rl/swe.py:286 _grade_scaleswe | r = await _run_f2p_script(ev, workdir, f2p_script, timeout_sec) |
| occ-000112 | examples/coding_agent_rl/swe.py:291 _setup_swepro_assets | await ev.exec(f"mkdir -p {_SWEPRO_DIR} && chmod 777 {_SWEPRO_DIR}", user="root", check=True) |
| occ-000114 | examples/coding_agent_rl/swe.py:295 _setup_swepro_assets | await ev.write_file(f"{_SWEPRO_DIR}/{dst}", Path(host_p), user="root") |
| occ-000115 | examples/coding_agent_rl/swe.py:296 _setup_swepro_assets | await ev.exec(f"chmod 755 {_SWEPRO_DIR}/* && chown -R agent:agent {_SWEPRO_DIR}", user="root", check=True) |
| occ-000117 | examples/coding_agent_rl/swe.py:302 _apply_diff | await ev.write_file(_PATCH, diff_text, user="agent") |
| occ-000119 | examples/coding_agent_rl/swe.py:312 _apply_diff | ec, _, _ = await ev.exec(f"cd {workdir} && ({ladder})", user="agent", check=False, timeout=120) |
| occ-000123 | examples/coding_agent_rl/swe.py:321 _run_swepro | await ev.exec( |
| occ-000124 | examples/coding_agent_rl/swe.py:327 _run_swepro | await ev.exec( |
| occ-000125 | examples/coding_agent_rl/swe.py:333 _run_swepro | raw = await ev.read_file(result_f, user="agent") |
| occ-000131 | examples/coding_agent_rl/swe.py:342 _run_eval_cmd | ec, _, _ = await ev.exec(f"cd {workdir} && {cmd}", user="agent", check=False, timeout=timeout) |
| occ-000133 | examples/coding_agent_rl/swe.py:350 _run_f2p_script | await ev.write_file(_F2P, script, user="agent") |
| occ-000134 | examples/coding_agent_rl/swe.py:351 _run_f2p_script | ec, _, _ = await ev.exec(f"cd {workdir} && python {_F2P}", user="agent", check=False, timeout=timeout) |
| occ-000137 | examples/coding_agent_rl/swe.py:373 _apply_model_patch | ec, _, _ = await ev.exec(cmd, user="root", check=False, timeout=120) |
| occ-000149 | examples/coding_agent_rl/swe.py:466 _grade_swebench | await asyncio.gather( |
| occ-000151 | examples/coding_agent_rl/swe.py:472 _grade_swebench | if not await _apply_model_patch(ev, md["workdir"]): |
| occ-000152 | examples/coding_agent_rl/swe.py:475 _grade_swebench | exit_code, log = await exec_and_wait( |
| occ-000161 | examples/geo3k_vlm_multi_turn/rollout.py:201 _run_inference_step | output = await post(url, payload) |
| occ-000164 | examples/geo3k_vlm_multi_turn/rollout.py:336 generate | await _run_inference_step(url, sample.tokens, cur_sampling_params, current_image_data, state.tokenizer) |
| occ-000169 | examples/multi_agent/agent_system.py:37 generate_response | output = await post(url, payload) |
| occ-000171 | examples/multi_agent/agent_system.py:99 Agent.run | response = await generate_response(args, prompt, key=key) |
| occ-000174 | examples/multi_agent/agent_system.py:117 SolverAgent.generate_initial_solution | return await self.run(args, prompt, max_retries=3, key="solver") |
| occ-000176 | examples/multi_agent/agent_system.py:138 RewriterAgent.rewrite | return await self.run(args, prompt, max_retries=1, key="rewriter") |
| occ-000178 | examples/multi_agent/agent_system.py:159 SelectorAgent.select | return await self.run(args, prompt, max_retries=10, key="selector") |
| occ-000180 | examples/multi_agent/agent_system.py:178 rewrite_worker | new_solution = await rewriter.rewrite(args, problem_statement, previous_solutions) |
| occ-000182 | examples/multi_agent/agent_system.py:189 solver_worker | current_solution = await solver.generate_initial_solution(args, problem_statement) |
| occ-000184 | examples/multi_agent/agent_system.py:222 run_agent_system | results = await asyncio.gather(*tasks, return_exceptions=True) |
| occ-000186 | examples/multi_agent/agent_system.py:224 run_agent_system | rewards = await batched_async_rm(args, args.results_dict["solver"]) |
| occ-000187 | examples/multi_agent/agent_system.py:244 run_agent_system | rewrited_solutions_raw = await asyncio.gather(*tasks, return_exceptions=True) |
| occ-000189 | examples/multi_agent/agent_system.py:252 run_agent_system | rewards = await batched_async_rm(args, args.results_dict["rewriter"]) |
| occ-000190 | examples/multi_agent/agent_system.py:263 run_agent_system | response = await selector.select(args, problem_statement, rewrited_solutions) |
| occ-000192 | examples/multi_agent/rollout_with_multi_agents.py:29 generate_with_multi_agents | samples = await custom_multi_agent_func(args, sample) |
| occ-000198 | examples/retool/generate_with_retool.py:193 execute_predictions | result = await tool_registry.execute_tool("code_interpreter", {"code": code}) |
| occ-000201 | examples/retool/generate_with_retool.py:299 generate | output = await post(url, payload) |
| occ-000202 | examples/retool/generate_with_retool.py:335 generate | next_obs, done = await execute_predictions(cur_response) |
| occ-000218 | examples/retool/tool_sandbox.py:344 ToolRegistry.execute_tool | return await self._execute_python(arguments) |
| occ-000221 | examples/retool/tool_sandbox.py:355 ToolRegistry._execute_python | result = await self.python_sandbox.execute_code(code) |
| occ-000226 | examples/search-r1/generate_with_search.py:70 search | result = await local_search( |
| occ-000227 | examples/search-r1/generate_with_search.py:80 search | result = await google_search( |
| occ-000230 | examples/search-r1/generate_with_search.py:130 execute_predictions | search_results = await search(search_query) |
| occ-000233 | examples/search-r1/generate_with_search.py:188 generate | output = await post(url, payload) |
| occ-000234 | examples/search-r1/generate_with_search.py:235 generate | next_obs, done = await execute_predictions(cur_response) |
| occ-000243 | examples/search-r1/google_search_server.py:55 fetch | raw = await response.read() |
| occ-000249 | examples/search-r1/google_search_server.py:70 fetch_all | return await asyncio.gather(*tasks) |
| occ-000255 | examples/search-r1/google_search_server.py:115 google_search | response = await resp.json() |
| occ-000261 | examples/search-r1/google_search_server.py:133 google_search | web_contents = await fetch_all(links) |
| occ-000267 | examples/search-r1/local_search_server.py:69 local_search | result = await resp.json() |
| occ-000271 | examples/strands_sglang/generate_with_strands.py:66 generate | await agent.invoke_async(prompt) |
| occ-000295 | examples/tau-bench/generate_with_tau.py:147 generate | interaction_result = await agent.asolve(env, agent.rollout_args, agent.sampling_params, task_index) |
| occ-000297 | examples/tau-bench/trainable_agents.py:102 TrainableAgentMixin._call_llm | return await post(url, payload) |
| occ-000302 | examples/tau-bench/trainable_agents.py:232 TrainableAgentMixin.asolve | output = await self._call_llm(url, payload) |
| occ-000303 | examples/tau-bench/trainable_agents.py:293 TrainableAgentMixin.asolve | env_response = await self._execute_tool(env, action) |
| occ-000310 | slime/agent/adapters/anthropic.py:74 AnthropicAdapter._respond | return await _render_stream(request, blocks, stop_reason, in_tok, out_tok) |
| occ-000333 | slime/agent/adapters/anthropic.py:223 _render_stream | await out.prepare(request) |
| occ-000334 | slime/agent/adapters/anthropic.py:238 _render_stream | await out.write(f"event: message_start\ndata: {json.dumps(ms_data, ensure_ascii=False)}\n\n".encode()) |
| occ-000336 | slime/agent/adapters/anthropic.py:256 _render_stream | await out.write(f"event: content_block_start\ndata: {json.dumps(cbs_data, ensure_ascii=False)}\n\n".encode()) |
| occ-000338 | slime/agent/adapters/anthropic.py:259 _render_stream | await out.write(f"event: content_block_delta\ndata: {json.dumps(cbd_data, ensure_ascii=False)}\n\n".encode()) |
| occ-000340 | slime/agent/adapters/anthropic.py:262 _render_stream | await out.write(f"event: content_block_stop\ndata: {json.dumps(cbe_data, ensure_ascii=False)}\n\n".encode()) |
| occ-000342 | slime/agent/adapters/anthropic.py:269 _render_stream | await out.write(f"event: message_delta\ndata: {json.dumps(md_data, ensure_ascii=False)}\n\n".encode()) |
| occ-000344 | slime/agent/adapters/anthropic.py:272 _render_stream | await out.write(f"event: message_stop\ndata: {json.dumps(mst_data, ensure_ascii=False)}\n\n".encode()) |
| occ-000347 | slime/agent/adapters/anthropic.py:280 _count_tokens | await request.read() |
| occ-000367 | slime/agent/adapters/common.py:233 BaseAdapter.shutdown_session._drain | _, pending = await asyncio.wait(tasks, timeout=wait_timeout) |
| occ-000370 | slime/agent/adapters/common.py:237 BaseAdapter.shutdown_session._drain | await asyncio.gather(*pending, return_exceptions=True) |
| occ-000373 | slime/agent/adapters/common.py:241 BaseAdapter.shutdown_session | await asyncio.wrap_future(asyncio.run_coroutine_threadsafe(_drain(), loop)) |
| occ-000378 | slime/agent/adapters/common.py:261 BaseAdapter.finish_session | await self.shutdown_session(sid, wait_timeout=wait_timeout) |
| occ-000380 | slime/agent/adapters/common.py:279 BaseAdapter.drop_session | await self.shutdown_session(sid, wait_timeout=wait_timeout) |
| occ-000384 | slime/agent/adapters/common.py:325 BaseAdapter._run_turn | body = await request.json() |
| occ-000386 | slime/agent/adapters/common.py:344 BaseAdapter._run_turn | turn = await call_sglang_generate(prompt_ids, s, body, adapter=self, session_id=sid) |
| occ-000389 | slime/agent/adapters/common.py:363 BaseAdapter._run_turn | response = await self._respond(request, body, reply, in_tok, out_tok, stream) |
| occ-000403 | slime/agent/adapters/common.py:486 call_sglang_generate | text = await r.text() |
| occ-000404 | slime/agent/adapters/common.py:496 call_sglang_generate | data = await r.json(content_type=None) |
| occ-000411 | slime/agent/adapters/common.py:506 call_sglang_generate | await _abort_sglang_request(sglang_url, rid, logger) |
| occ-000418 | slime/agent/adapters/common.py:532 _abort_sglang_request | await abort_worker(sglang_url) |
| occ-000419 | slime/agent/adapters/common.py:535 _abort_sglang_request | payload = await response.json() |
| occ-000422 | slime/agent/adapters/common.py:547 _abort_sglang_request | await asyncio.gather(*(abort_worker(url) for url in worker_urls)) |
| occ-000428 | slime/agent/adapters/openai.py:72 OpenAIAdapter._respond | return await _render_stream(request, body, wire_message, wire_finish, in_tok, out_tok) |
| occ-000452 | slime/agent/adapters/openai.py:347 _render_stream | await out.prepare(request) |
| occ-000455 | slime/agent/adapters/openai.py:361 _render_stream.emit | await out.write(f"data: {json.dumps(chunk, ensure_ascii=False)}\n\n".encode()) |
| occ-000457 | slime/agent/adapters/openai.py:363 _render_stream | await emit({"role": "assistant"}) |
| occ-000459 | slime/agent/adapters/openai.py:366 _render_stream | await emit({"reasoning_content": reasoning}) |
| occ-000461 | slime/agent/adapters/openai.py:369 _render_stream | await emit({"content": content}) |
| occ-000463 | slime/agent/adapters/openai.py:375 _render_stream | await emit({"tool_calls": [{**call, "index": idx} for idx, call in enumerate(tool_calls)]}) |
| occ-000464 | slime/agent/adapters/openai.py:376 _render_stream | await emit({}, finish_reason=wire_finish, usage=_usage(in_tok, out_tok)) |
| occ-000465 | slime/agent/adapters/openai.py:377 _render_stream | await out.write(b"data: [DONE]\n\n") |
| occ-000472 | slime/agent/aiohttp_threaded.py:35 AppHandle.stop._shutdown | await self.runner.cleanup() |
| occ-000490 | slime/agent/harness/claude_code.py:37 ClaudeCodeHarness.install_cli | await install_npm_cli( |
| occ-000492 | slime/agent/harness/claude_code.py:47 ClaudeCodeHarness.write_config | await sb.exec( |
| occ-000494 | slime/agent/harness/claude_code.py:71 ClaudeCodeHarness.launch_and_wait | return await run_agent(sb, workdir=ctx.workdir, start_cmd=cmd, env=env, time_budget_sec=time_budget_sec) |
| occ-000496 | slime/agent/harness/codex.py:49 CodexHarness.install_cli | await install_npm_cli( |
| occ-000498 | slime/agent/harness/codex.py:59 CodexHarness.write_config | await sb.exec( |
| occ-000500 | slime/agent/harness/codex.py:86 CodexHarness.launch_and_wait | return await run_agent(sb, workdir=ctx.workdir, start_cmd=cmd, env=env, time_budget_sec=time_budget_sec) |
| occ-000506 | slime/agent/harness/common.py:97 BaseHarness.run | await _sandbox.ensure_agent_user(sb, workdir) |
| occ-000507 | slime/agent/harness/common.py:103 BaseHarness.run | await self.write_config(sb, ctx) |
| occ-000508 | slime/agent/harness/common.py:104 BaseHarness.run | return await self.launch_and_wait(sb, ctx, prompt, time_budget_sec) |
| occ-000510 | slime/agent/harness/common.py:110 run_agent | await sb.exec(f"mkdir -p {meta_dir} && chown agent:agent {meta_dir}", user="root", check=True, timeout=30) |
| occ-000511 | slime/agent/harness/common.py:111 run_agent | exit_code, _ = await exec_and_wait( |
| occ-000513 | slime/agent/harness/common.py:135 install_npm_cli | await install_node22(sb, node_runtime) |
| occ-000514 | slime/agent/harness/common.py:137 install_npm_cli | await sb.write_file("/tmp/harness-cli.tgz", npm_package) |
| occ-000515 | slime/agent/harness/common.py:142 install_npm_cli | exit_code, last_log = await exec_and_wait( |
| occ-000516 | slime/agent/harness/common.py:148 install_npm_cli | await asyncio.sleep(NPM_INSTALL_BACKOFF_SEC * (attempt + 1)) |
| occ-000517 | slime/agent/harness/common.py:148 install_npm_cli | await asyncio.sleep(NPM_INSTALL_BACKOFF_SEC * (attempt + 1)) |
| occ-000519 | slime/agent/harness/common.py:167 install_node22 | await sb.write_file("/tmp/node22.tar", host_tarball) |
| occ-000520 | slime/agent/harness/common.py:168 install_node22 | await sb.exec( |
| occ-000528 | slime/agent/sandbox.py:75 _await_done_marker | await asyncio.sleep(5) |
| occ-000529 | slime/agent/sandbox.py:75 _await_done_marker | await asyncio.sleep(5) |
| occ-000530 | slime/agent/sandbox.py:76 _await_done_marker | ec, out, _ = await sb.exec(f"test -f {done_file} && cat {done_file}", user=user, timeout=15, check=False) |
| occ-000532 | slime/agent/sandbox.py:113 exec_and_wait | await sb.write_file(launcher, launcher_body, user=user) |
| occ-000533 | slime/agent/sandbox.py:122 exec_and_wait | await sb.exec( |
| occ-000534 | slime/agent/sandbox.py:129 exec_and_wait | await sb.exec( |
| occ-000535 | slime/agent/sandbox.py:139 exec_and_wait | exit_code = await _await_done_marker(sb, done_file, user=user, time_budget_sec=time_budget_sec) |
| occ-000536 | slime/agent/sandbox.py:143 exec_and_wait | return exit_code, await sb.read_file(out_file, user=user) |
| occ-000537 | slime/agent/sandbox.py:144 exec_and_wait | _, tail, _ = await sb.exec(f"tail -c 512 {out_file} 2>/dev/null", user=user, timeout=15, check=False) |
| occ-000539 | slime/agent/sandbox.py:249 E2BSandbox._rpc_retry | return await coro_factory() |
| occ-000540 | slime/agent/sandbox.py:257 E2BSandbox._rpc_retry | await self._reset_conn_pool() |
| occ-000541 | slime/agent/sandbox.py:269 E2BSandbox._rpc_retry | await asyncio.sleep(backoff) |
| occ-000542 | slime/agent/sandbox.py:269 E2BSandbox._rpc_retry | await asyncio.sleep(backoff) |
| occ-000544 | slime/agent/sandbox.py:277 E2BSandbox._reset_conn_pool | await pool.aclose() |
| occ-000546 | slime/agent/sandbox.py:298 E2BSandbox.__aenter__ | self._sb = await self._rpc_retry("create", lambda: AsyncSandbox.create(timeout=self.timeout, metadata=md)) |
| occ-000548 | slime/agent/sandbox.py:305 E2BSandbox.__aexit__ | await self._sb.kill() |
| occ-000551 | slime/agent/sandbox.py:322 E2BSandbox.exec | res = await self._rpc_retry( |
| occ-000554 | slime/agent/sandbox.py:348 E2BSandbox.write_file._do_path | await self._sb.files.write( |
| occ-000556 | slime/agent/sandbox.py:357 E2BSandbox.write_file | await self._rpc_retry(f"write_file({sandbox_path} <- {host_path.name})", _do_path) |
| occ-000558 | slime/agent/sandbox.py:363 E2BSandbox.write_file._do_bytes | await self._sb.files.write( |
| occ-000560 | slime/agent/sandbox.py:372 E2BSandbox.write_file | await self._rpc_retry(f"write_file({sandbox_path}, bytes={len(content)})", _do_bytes) |
| occ-000561 | slime/agent/sandbox.py:375 E2BSandbox.write_file | await self._rpc_retry( |
| occ-000564 | slime/agent/sandbox.py:382 E2BSandbox.read_file | return await self._rpc_retry( |
| occ-000567 | slime/agent/sandbox.py:392 ensure_agent_user | await sb.exec( |
| occ-000591 | slime/backends/megatron_utils/server/megatron_server.py:356 _ray_get | return await asyncio.to_thread(ray.get, ref) |
| occ-000594 | slime/backends/megatron_utils/server/megatron_server.py:363 _read_json_payload | payload = await request.json() |
| occ-000598 | slime/backends/megatron_utils/server/megatron_server.py:394 _wait_until_idle | loads = await _ray_get(sample_manager.get_loads.remote()) |
| occ-000599 | slime/backends/megatron_utils/server/megatron_server.py:399 _wait_until_idle | await asyncio.sleep(0.1) |
| occ-000600 | slime/backends/megatron_utils/server/megatron_server.py:399 _wait_until_idle | await asyncio.sleep(0.1) |
| occ-000609 | slime/backends/megatron_utils/server/megatron_server.py:441 _build_http_app.get_loads | return web.json_response(await _ray_get(sample_manager.get_loads.remote())) |
| occ-000611 | slime/backends/megatron_utils/server/megatron_server.py:447 _build_http_app.update_from_disk | payload = await _read_json_payload(request) |
| occ-000615 | slime/backends/megatron_utils/server/megatron_server.py:471 _build_http_app.update_from_disk | result = await asyncio.shield(update_future) |
| occ-000620 | slime/backends/megatron_utils/server/megatron_server.py:482 _build_http_app.update_from_disk | before_loads = await _wait_until_idle(sample_manager, timeout_s) |
| occ-000621 | slime/backends/megatron_utils/server/megatron_server.py:483 _build_http_app.update_from_disk | update_result = await asyncio.to_thread(update_from_disk_fn, model_path) |
| occ-000623 | slime/backends/megatron_utils/server/megatron_server.py:484 _build_http_app.update_from_disk | after_loads = await _ray_get(sample_manager.get_loads.remote()) |
| occ-000628 | slime/backends/megatron_utils/server/megatron_server.py:521 _build_http_app.generate | payload = await _read_json_payload(request) |
| occ-000631 | slime/backends/megatron_utils/server/megatron_server.py:548 _build_http_app.generate | stats = await _ray_get(sample_manager.get_stats.remote()) |
| occ-000632 | slime/backends/megatron_utils/server/megatron_server.py:570 _build_http_app.generate | request_id = await _ray_get( |
| occ-000633 | slime/backends/megatron_utils/server/megatron_server.py:581 _build_http_app.generate | result = await _ray_get(sample_manager.get_result.remote(request_id)) |
| occ-000634 | slime/backends/megatron_utils/server/megatron_server.py:584 _build_http_app.generate | await asyncio.sleep(0.05) |
| occ-000635 | slime/backends/megatron_utils/server/megatron_server.py:584 _build_http_app.generate | await asyncio.sleep(0.05) |
| occ-000637 | slime/backends/megatron_utils/server/megatron_server.py:588 _build_http_app.generate | await _ray_get(sample_manager.cancel_request.remote(request_id)) |
| occ-000672 | slime/backends/sglang_utils/server_control.py:39 get_live_router_workers | response = await client.get(f"{router_url}/workers") |
| occ-000675 | slime/backends/sglang_utils/server_control.py:44 get_live_router_workers.check | response = await client.get(f"{worker['url']}/health_generate") |
| occ-000677 | slime/backends/sglang_utils/server_control.py:50 get_live_router_workers.check | response = await client.delete(f"{router_url}/workers/{worker['id']}") |
| occ-000678 | slime/backends/sglang_utils/server_control.py:57 get_live_router_workers | workers = await asyncio.gather(*(check(worker) for worker in response.json()["workers"])) |
| occ-000695 | slime/backends/sglang_utils/server_control.py:153 _abort_server_once | await asyncio.wait_for( |
| occ-000698 | slime/backends/sglang_utils/server_control.py:160 _get_server_load | return await asyncio.wait_for( |
| occ-000702 | slime/backends/sglang_utils/server_control.py:199 abort_server_until_idle | await _abort_server_once(url, per_request_timeout) |
| occ-000703 | slime/backends/sglang_utils/server_control.py:210 abort_server_until_idle | load = await _get_server_load(url, min(request_timeout, remaining)) |
| occ-000704 | slime/backends/sglang_utils/server_control.py:233 abort_server_until_idle | await asyncio.sleep(min(retry_interval, remaining)) |
| occ-000705 | slime/backends/sglang_utils/server_control.py:233 abort_server_until_idle | await asyncio.sleep(min(retry_interval, remaining)) |
| occ-000707 | slime/backends/sglang_utils/server_control.py:245 abort_servers_until_idle | results = await asyncio.gather( |
| occ-000809 | slime/data/queue_data_source.py:1115 QueueReader.get_samples_async | return await asyncio.get_running_loop().run_in_executor(self._reader, self.get_samples, num_samples) |
| occ-000832 | slime/data/transport.py:366 publish_rollout_async | return await run_rollout_io(args, pack_rollout_group, value, args, rollout_id, controller=controller) |
| occ-000833 | slime/data/transport.py:367 publish_rollout_async | return await run_rollout_io(args, pack_rollout_payload, value, args, rollout_id) |
| occ-000841 | slime/data/transport.py:379 run_rollout_io | return await asyncio.shield(pending) |
| occ-000845 | slime/data/transport.py:385 run_rollout_io | await asyncio.shield(pending) |
| occ-000850 | slime/data/transport.py:413 unpack_published_payload | return await asyncio.to_thread(unpack_rollout_payload, value) |
| occ-000852 | slime/data/transport.py:419 unpack_published_payload | return await asyncio.to_thread(unpack_rollout_payload, value) |
| occ-000886 | slime/observability/trace_utils.py:472 trace_function.decorator.async_wrapper | return await fn(*args, **kwargs) |
| occ-000887 | slime/observability/trace_utils.py:475 trace_function.decorator.async_wrapper | return await fn(*args, **kwargs) |
| occ-000937 | slime/rollout/fully_async_distributed.py:281 _GenerationActor.start | await asyncio.wrap_future(future) |
| occ-000946 | slime/rollout/fully_async_distributed.py:296 _GenerationActor.pause | await asyncio.wrap_future(future) |
| occ-000951 | slime/rollout/fully_async_distributed.py:303 _GenerationActor.next | return await asyncio.wrap_future(future) |
| occ-000956 | slime/rollout/fully_async_distributed.py:308 _GenerationActor._next | await asyncio.wait((take, self.producer), return_when=asyncio.FIRST_COMPLETED) |
| occ-000963 | slime/rollout/fully_async_distributed.py:313 _GenerationActor._next | return await take |
| occ-000965 | slime/rollout/fully_async_distributed.py:317 _GenerationActor._next | await asyncio.gather(take, return_exceptions=True) |
| occ-000969 | slime/rollout/fully_async_distributed.py:322 _GenerationActor._produce.generate_slot | output = await self._generate_group(self.rollout_id, group) |
| occ-000970 | slime/rollout/fully_async_distributed.py:325 _GenerationActor._produce.generate_slot | await self.outputs.put(output) |
| occ-000972 | slime/rollout/fully_async_distributed.py:333 _GenerationActor._produce | groups = await self.data_source.get_samples_async(min(64, self.capacity - offset)) |
| occ-000974 | slime/rollout/fully_async_distributed.py:337 _GenerationActor._produce | await asyncio.sleep(0.001) |
| occ-000975 | slime/rollout/fully_async_distributed.py:337 _GenerationActor._produce | await asyncio.sleep(0.001) |
| occ-000976 | slime/rollout/fully_async_distributed.py:338 _GenerationActor._produce | await asyncio.gather(*tasks) |
| occ-000979 | slime/rollout/fully_async_distributed.py:342 _GenerationActor._produce | await asyncio.gather(*tasks, return_exceptions=True) |
| occ-000982 | slime/rollout/fully_async_distributed.py:348 _GenerationActor._generate_group | group = (await self.data_source.get_samples_async(1))[0] |
| occ-000983 | slime/rollout/fully_async_distributed.py:352 _GenerationActor._generate_group | await self._rebuffer(group) |
| occ-000984 | slime/rollout/fully_async_distributed.py:360 _GenerationActor._generate_group | group = await generate_and_rm_group(self.args, group, self.state.sampling_params.copy()) |
| occ-000985 | slime/rollout/fully_async_distributed.py:364 _GenerationActor._generate_group | await self._rebuffer(group) |
| occ-000986 | slime/rollout/fully_async_distributed.py:373 _GenerationActor._generate_group | await asyncio.to_thread( |
| occ-000988 | slime/rollout/fully_async_distributed.py:382 _GenerationActor._generate_group | group = await publish_rollout_async( |
| occ-000989 | slime/rollout/fully_async_distributed.py:387 _GenerationActor._generate_group | accepted = await publish_rollout_async( |
| occ-000990 | slime/rollout/fully_async_distributed.py:394 _GenerationActor._generate_group | group = await asyncio.to_thread(self.data_source.materialize_samples, group) |
| occ-000996 | slime/rollout/fully_async_distributed.py:405 _GenerationActor._rebuffer | await asyncio.shield(future) |
| occ-000999 | slime/rollout/fully_async_distributed.py:409 _GenerationActor._flush_rebuffers | await asyncio.sleep(0.01) |
| occ-001000 | slime/rollout/fully_async_distributed.py:409 _GenerationActor._flush_rebuffers | await asyncio.sleep(0.01) |
| occ-001001 | slime/rollout/fully_async_distributed.py:413 _GenerationActor._flush_rebuffers | await asyncio.to_thread(self.data_source.add_samples, [group for group, _ in batch]) |
| occ-001009 | slime/rollout/fully_async_distributed.py:436 _GenerationActor.close | await asyncio.wrap_future(future) |
| occ-001013 | slime/rollout/fully_async_distributed.py:442 _GenerationActor._close | await asyncio.gather(self.producer, return_exceptions=True) |
| occ-001015 | slime/rollout/fully_async_distributed.py:444 _GenerationActor._close | await self._rebuffer_task |
| occ-001016 | slime/rollout/fully_async_distributed.py:447 _GenerationActor._close | await asyncio.get_running_loop().shutdown_default_executor() |
| occ-001047 | slime/rollout/fully_async_rollout.py:192 AsyncRolloutWorker._loop | await asyncio.sleep(0) |
| occ-001048 | slime/rollout/fully_async_rollout.py:192 AsyncRolloutWorker._loop | await asyncio.sleep(0) |
| occ-001053 | slime/rollout/fully_async_rollout.py:226 AsyncRolloutWorker._loop | await asyncio.sleep(self.poll_interval) |
| occ-001054 | slime/rollout/fully_async_rollout.py:226 AsyncRolloutWorker._loop | await asyncio.sleep(self.poll_interval) |
| occ-001055 | slime/rollout/fully_async_rollout.py:237 AsyncRolloutWorker._loop | await asyncio.wait(active_tasks, timeout=30) |
| occ-001063 | slime/rollout/fully_async_rollout.py:306 _generate_rollout_async | group = await publish_rollout_async( |
| occ-001064 | slime/rollout/fully_async_rollout.py:312 _generate_rollout_async | await asyncio.to_thread( |
| occ-001067 | slime/rollout/fully_async_rollout.py:324 _generate_rollout_async | await asyncio.sleep(0.05) |
| occ-001068 | slime/rollout/fully_async_rollout.py:324 _generate_rollout_async | await asyncio.sleep(0.05) |
| occ-001069 | slime/rollout/fully_async_rollout.py:357 _generate_rollout_async | output = await asyncio.to_thread( |
| occ-001075 | slime/rollout/on_policy_distillation.py:29 reward_func | return await resp.json() |
| occ-001079 | slime/rollout/rm_hub/__init__.py:45 remote_rm | return await resp.json() |
| occ-001080 | slime/rollout/rm_hub/__init__.py:52 remote_rm | await asyncio.sleep(backoff) |
| occ-001081 | slime/rollout/rm_hub/__init__.py:52 remote_rm | await asyncio.sleep(backoff) |
| occ-001083 | slime/rollout/rm_hub/__init__.py:59 async_rm | return await rm_function(args, sample, **kwargs) |
| occ-001084 | slime/rollout/rm_hub/__init__.py:63 async_rm | return await rm_function(args, sample, **kwargs) |
| occ-001086 | slime/rollout/rm_hub/__init__.py:76 async_rm | return await remote_rm(args, sample) |
| occ-001088 | slime/rollout/rm_hub/__init__.py:107 batched_async_rm | return await rm_function(args, samples, **kwargs) |
| occ-001089 | slime/rollout/rm_hub/__init__.py:109 batched_async_rm | rewards = await asyncio.gather(*tasks) |
| occ-001110 | slime/rollout/sample_hooks.py:42 _apply_to_sample | result = await result |
| occ-001113 | slime/rollout/sample_hooks.py:61 apply_rollout_sample_hooks | return await _apply_to_sample(args, value, paths, **kwargs) |
| occ-001114 | slime/rollout/sample_hooks.py:63 apply_rollout_sample_hooks.<comprehension> | return [await apply_rollout_sample_hooks(args, item, **kwargs) for item in value] |
| occ-001122 | slime/rollout/sglang_rollout.py:220 generate | output = await post( |
| occ-001126 | slime/rollout/sglang_rollout.py:267 _run_request_abortable_generate | return await generate_call |
| occ-001130 | slime/rollout/sglang_rollout.py:283 _run_server_abort_generate | return await generate_call |
| occ-001133 | slime/rollout/sglang_rollout.py:330 generate_and_rm | await state.generation_pacer.wait() |
| occ-001135 | slime/rollout/sglang_rollout.py:345 generate_and_rm | sample = await _run_request_abortable_generate(state, sample, generate_call) |
| occ-001136 | slime/rollout/sglang_rollout.py:347 generate_and_rm | sample = await _run_server_abort_generate(state, generate_call) |
| occ-001137 | slime/rollout/sglang_rollout.py:350 generate_and_rm | sample = await apply_rollout_sample_hooks(args, sample, evaluation=evaluation) |
| occ-001138 | slime/rollout/sglang_rollout.py:364 generate_and_rm | rewards = await batched_async_rm(args, samples_need_reward) |
| occ-001139 | slime/rollout/sglang_rollout.py:374 generate_and_rm | sample.reward = await async_rm(args, sample) |
| occ-001142 | slime/rollout/sglang_rollout.py:414 generate_and_rm_group | group = await asyncio.gather(*tasks) |
| occ-001144 | slime/rollout/sglang_rollout.py:419 generate_and_rm_group | rewards = await batched_async_rm(args, group) |
| occ-001147 | slime/rollout/sglang_rollout.py:441 abort | workers = (await get(f"{router_url}/workers"))["workers"] |
| occ-001148 | slime/rollout/sglang_rollout.py:445 abort | workers = await get_live_router_workers(router_url, timeout=args.rollout_health_check_timeout) |
| occ-001149 | slime/rollout/sglang_rollout.py:447 abort | await abort_servers_until_idle(urls) |
| occ-001150 | slime/rollout/sglang_rollout.py:449 abort | await asyncio.gather(*cancellable_tasks, return_exceptions=True) |
| occ-001152 | slime/rollout/sglang_rollout.py:454 abort | done, state.pendings = await asyncio.wait(state.pendings, return_when=asyncio.FIRST_COMPLETED) |
| occ-001157 | slime/rollout/sglang_rollout.py:517 generate_rollout_async | samples = await reader.get_samples_async(args.over_sampling_batch_size) |
| occ-001158 | slime/rollout/sglang_rollout.py:523 generate_rollout_async | done, state.pendings = await asyncio.wait(state.pendings, return_when=asyncio.FIRST_COMPLETED) |
| occ-001162 | slime/rollout/sglang_rollout.py:545 generate_rollout_async | await asyncio.to_thread( |
| occ-001164 | slime/rollout/sglang_rollout.py:561 generate_rollout_async | group = await publish_rollout_async(group, args, rollout_id, group=True, controller=controller) |
| occ-001166 | slime/rollout/sglang_rollout.py:571 generate_rollout_async | aborted_samples = await abort(args, rollout_id) |
| occ-001168 | slime/rollout/sglang_rollout.py:585 generate_rollout_async.<comprehension> | await publish_rollout_async(group, args, rollout_id, group=True, controller=controller) |
| occ-001169 | slime/rollout/sglang_rollout.py:588 generate_rollout_async | data = await publish_rollout_async(data, args, rollout_id) |
| occ-001170 | slime/rollout/sglang_rollout.py:594 generate_rollout_async | output = await asyncio.to_thread( |
| occ-001173 | slime/rollout/sglang_rollout.py:609 eval_rollout | results_list = await asyncio.gather(*coros) |
| occ-001178 | slime/rollout/sglang_rollout.py:726 eval_rollout_single_dataset | sample = await coro |
| occ-001202 | slime/utils/async_utils.py:31 AsyncPacer.wait | await future |
| occ-001249 | slime/utils/http_utils.py:183 _ShardedHTTPTransport.handle_async_request | return await transport.handle_async_request(request) |
| occ-001251 | slime/utils/http_utils.py:186 _ShardedHTTPTransport.aclose | await asyncio.gather(*(transport.aclose() for transport in self._transports)) |
| occ-001254 | slime/utils/http_utils.py:197 _post | response = await client.post(url, **request_kwargs) |
| occ-001255 | slime/utils/http_utils.py:199 _post | content = await response.aread() |
| occ-001256 | slime/utils/http_utils.py:204 _post | output = await asyncio.to_thread(decode_score_centering_response, content, score_centering_top_k) |
| occ-001258 | slime/utils/http_utils.py:223 _post | await asyncio.sleep(1) |
| occ-001259 | slime/utils/http_utils.py:223 _post | await asyncio.sleep(1) |
| occ-001260 | slime/utils/http_utils.py:227 _post | await response.aclose() |
| occ-001263 | slime/utils/http_utils.py:298 _init_ray_distributed_post._HttpPosterActor.do_post | return await _post( |
| occ-001265 | slime/utils/http_utils.py:351 post | return await obj_ref |
| occ-001266 | slime/utils/http_utils.py:356 post | return await _post( |
| occ-001268 | slime/utils/http_utils.py:368 get | response = await _http_client.get(url, timeout=timeout) |
| occ-001270 | slime/utils/http_utils.py:371 get | content = await response.aread() |
| occ-001271 | slime/utils/http_utils.py:374 get | await response.aclose() |
| occ-001313 | slime_plugins/rollout_buffer/buffer.py:115 set_body_size | response = await call_next(request) |
| occ-001319 | slime_plugins/rollout_buffer/buffer.py:262 write_to_buffer | data = await request.json() |
| occ-001327 | slime_plugins/rollout_buffer/buffer.py:327 start_rollout | payload = await request.json() |
| occ-001331 | slime_plugins/rollout_buffer/generator/base_generator.py:8 <module> | from time import sleep |
| occ-001355 | slime_plugins/rollout_buffer/rollout_buffer_example.py:146 get_rollout_data | resp_json = await response.json() |
| occ-001356 | slime_plugins/rollout_buffer/rollout_buffer_example.py:149 get_rollout_data | await asyncio.sleep(3) |
| occ-001357 | slime_plugins/rollout_buffer/rollout_buffer_example.py:149 get_rollout_data | await asyncio.sleep(3) |
| occ-001360 | slime_plugins/rollout_buffer/rollout_buffer_example.py:244 generate_rollout_async | data, meta_info = await get_rollout_data(api_base_url=base_url) |
| occ-001403 | tests/fanout_test_helpers.py:57 compact_generate | base_sample = await generate(args, sample, sampling_params) |
| occ-001447 | tests/rollout_health_test_helpers.py:48 generate_rollout.crash_then_abort | result = await original_abort(config, current_rollout) |
| occ-001463 | tests/test_agent/_fakes.py:159 FakeSGLangServer._handle | self.requests.append(await request.json()) |
| occ-001465 | tests/test_agent/_fakes.py:177 FakeSGLangServer.__aenter__ | await self._server.start_server() |
| occ-001467 | tests/test_agent/_fakes.py:183 FakeSGLangServer.__aexit__ | await self._server.close() |
| occ-001474 | tests/test_agent/_fakes.py:271 FakeSandbox.exec | code = await self.on_launch(env or {}) |
| occ-001481 | tests/test_agent/test_adapters.py:74 _drain | return await adapter.finish_session(sid, base_sample=Sample(index=0, prompt=""), reward=1.0) |
| occ-001484 | tests/test_agent/test_adapters.py:175 test_anthropic_messages_nonstream_records_token_segments.run_case | await client.start_server() |
| occ-001485 | tests/test_agent/test_adapters.py:177 test_anthropic_messages_nonstream_records_token_segments.run_case | resp = await client.post( |
| occ-001486 | tests/test_agent/test_adapters.py:182 test_anthropic_messages_nonstream_records_token_segments.run_case | data = await resp.json() |
| occ-001487 | tests/test_agent/test_adapters.py:184 test_anthropic_messages_nonstream_records_token_segments.run_case | await client.close() |
| occ-001489 | tests/test_agent/test_adapters.py:185 test_anthropic_messages_nonstream_records_token_segments.run_case | samples = await _drain(adapter, "sid-a") |
| occ-001493 | tests/test_agent/test_adapters.py:211 test_openai_chat_completions_nonstream_records_token_segments.run_case | await client.start_server() |
| occ-001494 | tests/test_agent/test_adapters.py:213 test_openai_chat_completions_nonstream_records_token_segments.run_case | resp = await client.post( |
| occ-001495 | tests/test_agent/test_adapters.py:218 test_openai_chat_completions_nonstream_records_token_segments.run_case | data = await resp.json() |
| occ-001496 | tests/test_agent/test_adapters.py:220 test_openai_chat_completions_nonstream_records_token_segments.run_case | await client.close() |
| occ-001498 | tests/test_agent/test_adapters.py:221 test_openai_chat_completions_nonstream_records_token_segments.run_case | samples = await _drain(adapter, "sid-o") |
| occ-001502 | tests/test_agent/test_adapters.py:245 test_anthropic_messages_streams_blocks.run_case | await client.start_server() |
| occ-001503 | tests/test_agent/test_adapters.py:247 test_anthropic_messages_streams_blocks.run_case | resp = await client.post( |
| occ-001504 | tests/test_agent/test_adapters.py:257 test_anthropic_messages_streams_blocks.run_case | raw = await resp.text() |
| occ-001505 | tests/test_agent/test_adapters.py:259 test_anthropic_messages_streams_blocks.run_case | await client.close() |
| occ-001507 | tests/test_agent/test_adapters.py:260 test_anthropic_messages_streams_blocks.run_case | await _drain(adapter, "sid-as") |
| occ-001512 | tests/test_agent/test_adapters.py:279 test_openai_chat_completions_streams_chunks_until_done.run_case | await client.start_server() |
| occ-001513 | tests/test_agent/test_adapters.py:281 test_openai_chat_completions_streams_chunks_until_done.run_case | resp = await client.post( |
| occ-001514 | tests/test_agent/test_adapters.py:286 test_openai_chat_completions_streams_chunks_until_done.run_case | raw = await resp.text() |
| occ-001515 | tests/test_agent/test_adapters.py:288 test_openai_chat_completions_streams_chunks_until_done.run_case | await client.close() |
| occ-001517 | tests/test_agent/test_adapters.py:289 test_openai_chat_completions_streams_chunks_until_done.run_case | await _drain(adapter, "sid-os") |
| occ-001521 | tests/test_agent/test_adapters.py:320 test_anthropic_multiturn_wire_roundtrip_and_token_capture.run_case | await client.start_server() |
| occ-001522 | tests/test_agent/test_adapters.py:325 test_anthropic_multiturn_wire_roundtrip_and_token_capture.run_case | first = await client.post( |
| occ-001523 | tests/test_agent/test_adapters.py:335 test_anthropic_multiturn_wire_roundtrip_and_token_capture.run_case | fdata = await first.json() |
| occ-001524 | tests/test_agent/test_adapters.py:337 test_anthropic_multiturn_wire_roundtrip_and_token_capture.run_case | second = await client.post( |
| occ-001525 | tests/test_agent/test_adapters.py:356 test_anthropic_multiturn_wire_roundtrip_and_token_capture.run_case | await second.json() |
| occ-001526 | tests/test_agent/test_adapters.py:358 test_anthropic_multiturn_wire_roundtrip_and_token_capture.run_case | await client.close() |
| occ-001528 | tests/test_agent/test_adapters.py:359 test_anthropic_multiturn_wire_roundtrip_and_token_capture.run_case | samples = await _drain(adapter, "sid-mt") |
| occ-001532 | tests/test_agent/test_adapters.py:390 test_max_turns_per_sid_returns_429.run_case | await client.start_server() |
| occ-001533 | tests/test_agent/test_adapters.py:394 test_max_turns_per_sid_returns_429.run_case | first = await client.post("/v1/messages", headers=h, json=body) |
| occ-001534 | tests/test_agent/test_adapters.py:395 test_max_turns_per_sid_returns_429.run_case | second = await client.post("/v1/messages", headers=h, json=body) |
| occ-001535 | tests/test_agent/test_adapters.py:397 test_max_turns_per_sid_returns_429.run_case | await client.close() |
| occ-001537 | tests/test_agent/test_adapters.py:398 test_max_turns_per_sid_returns_429.run_case | await _drain(adapter, "sid-cap") |
| occ-001547 | tests/test_agent/test_agent_rollout_cpu.py:78 <module> | _REAL_SLEEP = asyncio.sleep |
| occ-001549 | tests/test_agent/test_agent_rollout_cpu.py:82 _fast_sleep | await _REAL_SLEEP(0) |
| occ-001553 | tests/test_agent/test_agent_rollout_cpu.py:121 _anthropic_agent | data = await r.json() |
| occ-001556 | tests/test_agent/test_agent_rollout_cpu.py:181 test_generate_produces_trained_samples.run_case | samples = await gen.generate(_args(), _base_sample(), sampling_params={"max_new_tokens": 32}) |
| occ-001561 | tests/test_agent/test_agent_rollout_cpu.py:209 test_generate_aborts_on_empty_trajectory.run_case | samples = await gen.generate(_args(), _base_sample(), sampling_params={}) |
| occ-001565 | tests/test_agent/test_agent_rollout_cpu.py:224 test_generate_aborts_on_missing_image.run_case | samples = await gen.generate(_args(), _base_sample(image=""), sampling_params={}) |
| occ-001571 | tests/test_agent/test_agent_rollout_cpu.py:249 _codex_agent | data = await r.json() |
| occ-001574 | tests/test_agent/test_agent_rollout_cpu.py:274 test_codex_openai_rollout_closes_loop.run_case | rc = await CodexHarness().run( |
| occ-001575 | tests/test_agent/test_agent_rollout_cpu.py:282 test_codex_openai_rollout_closes_loop.run_case | samples = await adapter.finish_session(sid, base_sample=Sample(index=0, prompt=""), reward=1.0) |
| occ-001579 | tests/test_agent/test_harness.py:35 <module> | _REAL_SLEEP = asyncio.sleep |
| occ-001581 | tests/test_agent/test_harness.py:39 _fast_sleep | await _REAL_SLEEP(0) |
| occ-001584 | tests/test_agent/test_harness.py:65 test_run_agent_returns_marker_exit_code.run_case | rc = await hc.run_agent( |
| occ-001588 | tests/test_agent/test_harness.py:85 test_run_agent_propagates_nonzero_exit.run_case | rc = await hc.run_agent(sb, workdir="/w", start_cmd="x", env={}, time_budget_sec=30) |
| occ-001591 | tests/test_agent/test_harness.py:95 test_run_agent_times_out_when_marker_never_appears.run_case | rc = await hc.run_agent(sb, workdir="/w", start_cmd="x", env={}, time_budget_sec=0) |
| occ-001594 | tests/test_agent/test_harness.py:109 test_claude_code_write_config_preacks_bypass_permissions.run_case | await ClaudeCodeHarness().write_config(sb, _ctx()) |
| occ-001599 | tests/test_agent/test_harness.py:128 test_claude_code_launch_command_and_env.run_case | rc = await ClaudeCodeHarness().launch_and_wait( |
| occ-001602 | tests/test_agent/test_harness.py:154 test_codex_write_config_base64_roundtrips_inline_base_url.run_case | await CodexHarness().write_config(sb, _ctx(url="http://host:18001")) |
| occ-001606 | tests/test_agent/test_harness.py:176 test_codex_launch_command_and_env.run_case | rc = await CodexHarness().launch_and_wait( |
| occ-001609 | tests/test_agent/test_harness.py:197 test_ensure_agent_user_provisions_user_and_git_safe_dir.run_case | await sandbox_mod.ensure_agent_user(sb, "/workspace/repo") |
| occ-001613 | tests/test_agent/test_harness.py:218 test_base_harness_run_calls_steps_in_order.run_case | rc = await ClaudeCodeHarness().run( |
| occ-001626 | tests/test_agent/test_sandbox_exec_and_wait.py:135 test_same_tag_reinvocation_actually_reruns._two_attempts | first = await exec_and_wait(sb, cmd="npm install", time_budget_sec=60, tag="npm", want_output=True) |
| occ-001627 | tests/test_agent/test_sandbox_exec_and_wait.py:136 test_same_tag_reinvocation_actually_reruns._two_attempts | second = await exec_and_wait(sb, cmd="npm install", time_budget_sec=60, tag="npm", want_output=True) |
| occ-001663 | tests/test_distributed_rollout.py:618 test_slow_task_acquire_does_not_block_async_generation.exercise | await asyncio.sleep(0.01) |
| occ-001664 | tests/test_distributed_rollout.py:618 test_slow_task_acquire_does_not_block_async_generation.exercise | await asyncio.sleep(0.01) |
| occ-001668 | tests/test_distributed_rollout.py:623 test_slow_task_acquire_does_not_block_async_generation.exercise | assert len(await task) == 1 |
| occ-001679 | tests/test_distributed_rollout.py:688 scheduler_factory.create.make_generator.execute | await asyncio.sleep(0.01) |
| occ-001680 | tests/test_distributed_rollout.py:688 scheduler_factory.create.make_generator.execute | await asyncio.sleep(0.01) |
| occ-001686 | tests/test_distributed_rollout.py:735 scheduler_factory.cleanup | await asyncio.gather(*producers, return_exceptions=True) |
| occ-001722 | tests/test_distributed_rollout.py:990 test_worker_refills_locally_and_slow_group_does_not_block_results.generate_group | await release.wait() |
| occ-001724 | tests/test_distributed_rollout.py:992 test_worker_refills_locally_and_slow_group_does_not_block_results.generate_group | await asyncio.sleep(0) |
| occ-001725 | tests/test_distributed_rollout.py:992 test_worker_refills_locally_and_slow_group_does_not_block_results.generate_group | await asyncio.sleep(0) |
| occ-001728 | tests/test_distributed_rollout.py:1007 test_worker_refills_locally_and_slow_group_does_not_block_results.exercise | await worker._start(0) |
| occ-001729 | tests/test_distributed_rollout.py:1009 test_worker_refills_locally_and_slow_group_does_not_block_results.exercise | first = await asyncio.wait_for(worker._next(), timeout=5) |
| occ-001731 | tests/test_distributed_rollout.py:1010 test_worker_refills_locally_and_slow_group_does_not_block_results.exercise | second = await asyncio.wait_for(worker._next(), timeout=5) |
| occ-001734 | tests/test_distributed_rollout.py:1017 test_worker_refills_locally_and_slow_group_does_not_block_results.exercise | output = await asyncio.wait_for(worker._next(), timeout=5) |
| occ-001736 | tests/test_distributed_rollout.py:1020 test_worker_refills_locally_and_slow_group_does_not_block_results.exercise | await asyncio.sleep(0.02) |
| occ-001737 | tests/test_distributed_rollout.py:1020 test_worker_refills_locally_and_slow_group_does_not_block_results.exercise | await asyncio.sleep(0.02) |
| occ-001738 | tests/test_distributed_rollout.py:1022 test_worker_refills_locally_and_slow_group_does_not_block_results.exercise | await asyncio.sleep(0.02) |
| occ-001739 | tests/test_distributed_rollout.py:1022 test_worker_refills_locally_and_slow_group_does_not_block_results.exercise | await asyncio.sleep(0.02) |
| occ-001740 | tests/test_distributed_rollout.py:1026 test_worker_refills_locally_and_slow_group_does_not_block_results.exercise | await worker._pause() |
| occ-001742 | tests/test_distributed_rollout.py:1029 test_worker_refills_locally_and_slow_group_does_not_block_results.exercise | while (output := await asyncio.wait_for(worker._next(), timeout=5)) is not None: |
| occ-001746 | tests/test_distributed_rollout.py:1037 test_worker_refills_locally_and_slow_group_does_not_block_results.exercise | await asyncio.gather(worker.producer, return_exceptions=True) |
| occ-001750 | tests/test_distributed_rollout.py:1054 _generate_locally | await asyncio.sleep(0.01) |
| occ-001751 | tests/test_distributed_rollout.py:1054 _generate_locally | await asyncio.sleep(0.01) |
| occ-001752 | tests/test_distributed_rollout.py:1055 _generate_locally | await asyncio.sleep(0.01 * (sample.group_index % 3)) |
| occ-001753 | tests/test_distributed_rollout.py:1055 _generate_locally | await asyncio.sleep(0.01 * (sample.group_index % 3)) |
| occ-001775 | tests/test_distributed_rollout.py:1832 test_cancelled_rebuffer_waiter_does_not_drop_its_continuation.exercise | await asyncio.sleep(0.001) |
| occ-001776 | tests/test_distributed_rollout.py:1832 test_cancelled_rebuffer_waiter_does_not_drop_its_continuation.exercise | await asyncio.sleep(0.001) |
| occ-001778 | tests/test_distributed_rollout.py:1834 test_cancelled_rebuffer_waiter_does_not_drop_its_continuation.exercise | await asyncio.gather(*waiters, return_exceptions=True) |
| occ-001804 | tests/test_distributed_rollout.py:2080 test_queue_fetch_finishing_after_pause_preserves_group_without_new_generation.run.fetch | await release.wait() |
| occ-001809 | tests/test_distributed_rollout.py:2095 test_queue_fetch_finishing_after_pause_preserves_group_without_new_generation.run | await entered.wait() |
| occ-001811 | tests/test_distributed_rollout.py:2096 test_queue_fetch_finishing_after_pause_preserves_group_without_new_generation.run | await worker._pause() |
| occ-001813 | tests/test_distributed_rollout.py:2098 test_queue_fetch_finishing_after_pause_preserves_group_without_new_generation.run | assert await task is None |
| occ-001842 | tests/test_fully_async_rollout.py:267 test_local_worker_lifecycle_is_scoped_to_source.generate | await asyncio.sleep(0.01) |
| occ-001843 | tests/test_fully_async_rollout.py:267 test_local_worker_lifecycle_is_scoped_to_source.generate | await asyncio.sleep(0.01) |
| occ-001941 | tests/test_rollout_sample_hooks.py:63 test_concurrent_groups_keep_their_own_rollout_hook_context.generate | await asyncio.sleep(0) |
| occ-001942 | tests/test_rollout_sample_hooks.py:63 test_concurrent_groups_keep_their_own_rollout_hook_context.generate | await asyncio.sleep(0) |
| occ-001943 | tests/test_rollout_sample_hooks.py:64 test_concurrent_groups_keep_their_own_rollout_hook_context.generate | sample = await apply_rollout_sample_hooks(args, Sample(index=rollout_id)) |
| occ-001945 | tests/test_rollout_sample_hooks.py:68 test_concurrent_groups_keep_their_own_rollout_hook_context.exercise | assert await asyncio.gather(generate(10), generate(11)) == [("seen", 10), ("seen", 11)] |
| occ-001958 | tests/test_rollout_straw_transport.py:381 test_synchronous_rollout_stores_during_generation_and_preserves_legacy_hook.exercise.generate | await second.wait() |
| occ-001963 | tests/test_rollout_straw_transport.py:409 test_synchronous_rollout_stores_during_generation_and_preserves_legacy_hook.exercise | return await asyncio.wait_for(sr.generate_rollout_async(args, 0, lambda count: [None] * count), timeout=20) |
| occ-002002 | tests/test_score_centering_transport.py:216 test_evaluation_preserves_training_score_centering.run | await rollout.generate_and_rm(a, Sample(), {"temperature": 0}, evaluation=True) |
| occ-002003 | tests/test_score_centering_transport.py:217 test_evaluation_preserves_training_score_centering.run | await rollout.generate_and_rm(a, Sample(), {"temperature": 0.8}) |
| occ-002027 | tests/test_server_control.py:239 test_http_transport_preserves_streams_timeouts_and_connection_budget.check.serve | headers = await reader.readuntil(b"\r\n\r\n") |
| occ-002029 | tests/test_server_control.py:248 test_http_transport_preserves_streams_timeouts_and_connection_budget.check.serve | body = await reader.readexactly(length) |
| occ-002031 | tests/test_server_control.py:250 test_http_transport_preserves_streams_timeouts_and_connection_budget.check.serve | await asyncio.sleep(0.1) |
| occ-002032 | tests/test_server_control.py:250 test_http_transport_preserves_streams_timeouts_and_connection_budget.check.serve | await asyncio.sleep(0.1) |
| occ-002034 | tests/test_server_control.py:252 test_http_transport_preserves_streams_timeouts_and_connection_budget.check.serve | await writer.drain() |
| occ-002038 | tests/test_server_control.py:258 test_http_transport_preserves_streams_timeouts_and_connection_budget.check.serve | await writer.wait_closed() |
| occ-002040 | tests/test_server_control.py:261 test_http_transport_preserves_streams_timeouts_and_connection_budget.check | server = await asyncio.start_server(serve, "127.0.0.1", 0, backlog=2 * concurrency) |
| occ-002045 | tests/test_server_control.py:269 test_http_transport_preserves_streams_timeouts_and_connection_budget.check.request | assert await response.aread() == body |
| occ-002046 | tests/test_server_control.py:272 test_http_transport_preserves_streams_timeouts_and_connection_budget.check | await asyncio.gather(*(request(i) for i in range(concurrency + 3))) |
| occ-002048 | tests/test_server_control.py:276 test_http_transport_preserves_streams_timeouts_and_connection_budget.check | await client.post(url + "/slow", content=b"x", timeout=0.01) |
| occ-002049 | tests/test_server_control.py:277 test_http_transport_preserves_streams_timeouts_and_connection_budget.check | assert (await client.post(url, content=b"after-timeout")).content == b"after-timeout" |
| occ-002051 | tests/test_server_control.py:280 test_http_transport_preserves_streams_timeouts_and_connection_budget.check | await server.wait_closed() |
| occ-002053 | tests/test_server_control.py:281 test_http_transport_preserves_streams_timeouts_and_connection_budget.check | await asyncio.gather(*tasks, return_exceptions=True) |
| occ-002063 | tests/test_straw_fully_async_recovery.py:49 _generate_with_interrupt | await asyncio.Event().wait() |
| occ-002066 | tests/test_straw_fully_async_recovery.py:52 _generate_with_interrupt | await asyncio.Event().wait() |
| occ-002069 | tests/test_straw_fully_async_recovery.py:53 _generate_with_interrupt | sample = await _generate_locally(args, sample, sampling_params) |
| occ-002101 | tests/test_straw_r3.py:163 test_cancelled_straw_publication_drains_before_releasing_capacity.run | assert await asyncio.to_thread(entered.wait, 5) |
| occ-002105 | tests/test_straw_r3.py:167 test_cancelled_straw_publication_drains_before_releasing_capacity.run | await asyncio.sleep(0.05) |
| occ-002106 | tests/test_straw_r3.py:167 test_cancelled_straw_publication_drains_before_releasing_capacity.run | await asyncio.sleep(0.05) |
| occ-002108 | tests/test_straw_r3.py:169 test_cancelled_straw_publication_drains_before_releasing_capacity.run | await asyncio.sleep(0.05) |
| occ-002109 | tests/test_straw_r3.py:169 test_cancelled_straw_publication_drains_before_releasing_capacity.run | await asyncio.sleep(0.05) |
| occ-002112 | tests/test_straw_r3.py:174 test_cancelled_straw_publication_drains_before_releasing_capacity.run | results = await asyncio.gather(*tasks, return_exceptions=True) |
| occ-002141 | tests/test_streaming_rollout.py:369 test_stream_cancellation_closes_request_and_keeps_prefix.lines | await asyncio.Event().wait() |
| occ-002146 | tests/test_streaming_rollout.py:377 test_stream_cancellation_closes_request_and_keeps_prefix.server_generate | await server_released.wait() |
| occ-002154 | tests/test_streaming_rollout.py:401 test_stream_cancellation_closes_request_and_keeps_prefix.exercise | await asyncio.gather(first_chunk_seen.wait(), server_started.wait()) |
| occ-002158 | tests/test_streaming_rollout.py:402 test_stream_cancellation_closes_request_and_keeps_prefix.exercise | await sglang_rollout.abort(args, rollout_id=0) |
| occ-002159 | tests/test_streaming_rollout.py:403 test_stream_cancellation_closes_request_and_keeps_prefix.exercise | return await asyncio.gather(request_task, server_task) |
| occ-002166 | tests/test_streaming_rollout.py:421 test_unrelated_stream_cancellation_propagates.lines | await asyncio.Event().wait() |
| occ-002172 | tests/test_streaming_rollout.py:435 test_unrelated_stream_cancellation_propagates.exercise | await request_started.wait() |
| occ-002176 | tests/test_streaming_rollout.py:439 test_unrelated_stream_cancellation_propagates.exercise | await task |
| occ-002180 | tests/test_streaming_rollout.py:472 test_partial_abort_buffers_and_resumes_only_aborted_siblings.exercise.<comprehension> | asyncio.create_task(asyncio.sleep(0, result=group)) for group in (mixed_group, [terminal], [empty]) |
| occ-002181 | tests/test_streaming_rollout.py:486 test_partial_abort_buffers_and_resumes_only_aborted_siblings.exercise | buffered_groups = await sglang_rollout.abort(args, rollout_id=7) |
| occ-002185 | tests/test_streaming_rollout.py:511 test_partial_abort_buffers_and_resumes_only_aborted_siblings.exercise | resumed_group = await sglang_rollout.generate_and_rm_group(args, mixed_group, {"max_new_tokens": 1}) |
| occ-002196 | tests/test_streaming_rollout.py:558 test_generation_pacing_preserves_concurrency_cancellation_and_reuse.exercise.generate | await finish.wait() |
| occ-002199 | tests/test_streaming_rollout.py:573 test_generation_pacing_preserves_concurrency_cancellation_and_reuse.exercise | await asyncio.wait_for(first_batch.wait(), 1) |
| occ-002205 | tests/test_streaming_rollout.py:579 test_generation_pacing_preserves_concurrency_cancellation_and_reuse.exercise | await tasks[70] |
| occ-002206 | tests/test_streaming_rollout.py:581 test_generation_pacing_preserves_concurrency_cancellation_and_reuse.exercise | await asyncio.wait_for(all_started.wait(), 1) |
| occ-002210 | tests/test_streaming_rollout.py:585 test_generation_pacing_preserves_concurrency_cancellation_and_reuse.exercise | await asyncio.gather(*(task for i, task in enumerate(tasks) if i != 70)) |
| occ-002212 | tests/test_streaming_rollout.py:586 test_generation_pacing_preserves_concurrency_cancellation_and_reuse.exercise | assert (await start(128)).status == Sample.Status.COMPLETED |
| occ-002219 | tests/test_streaming_rollout.py:602 test_abort_while_waiting_for_generation_pacer_does_not_start_request.exercise.wait_for_release | await release.wait() |
| occ-002221 | tests/test_streaming_rollout.py:603 test_abort_while_waiting_for_generation_pacer_does_not_start_request.exercise.wait_for_release | await wait() |
| occ-002224 | tests/test_streaming_rollout.py:612 test_abort_while_waiting_for_generation_pacer_does_not_start_request.exercise | await queued.wait() |
| occ-002227 | tests/test_streaming_rollout.py:615 test_abort_while_waiting_for_generation_pacer_does_not_start_request.exercise | assert (await task).status == Sample.Status.ABORTED |
专题首页 · 上一节 · 下一节:03 · Task 与 gather:把多份工作安排起来 · 源码与教程对照 · 全部用法