Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

uvloop may sleep less than `n` for asyncio.sleep(n)

未关闭
#739 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
48/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
停滞
技术栈
python
领域
backend

调研方向

首先使用默认的 asyncio 循环和 uvloop 运行提供的复现用例,然后跟踪 uvloop 如何处理 asyncio.sleep 的计时器。将测得的持续时间与请求的延迟进行比较,并为最小睡眠时间添加回归测试。完成标准是 asyncio.sleep(n) 不会在 n 经过之前返回。

由索引模型根据 Issue 内容生成。

描述

Bug Description

When calling asyncio.sleep, uvloop sometimes sleeps for fractionally less then the requested sleep time. E.g. await asyncio.sleep(0.1) -> Sleeps for 0.0991.

Expected behavior

Should always sleep for at least the specified time.

Environment

  • Operating System: Fedora 43
  • Python Version: Python 3.13.12
  • uvloop Version: 0.22.1

Steps to Reproduce

Run the following script and observe output:

import asyncio
import statistics
import time

async def main():
    sleep_times = []
    for _ in range(100):
        start_time = time.perf_counter()
        await asyncio.sleep(0.1)
        end_time = time.perf_counter()
        sleep_times.append(end_time - start_time)
    print(f"Min sleep time: {min(sleep_times):.4f} seconds")
    print(f"Max sleep time: {max(sleep_times):.4f} seconds")
    print(f"Average sleep time: {statistics.mean(sleep_times):.4f} seconds")

if __name__ == "__main__":
    print("With default asyncio event loop:")
    asyncio.run(main())
    print("With uvloop event loop:")
    import uvloop
    asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
    asyncio.run(main())

Output:

With default asyncio event loop:
Min sleep time: 0.1001 seconds
Max sleep time: 0.1008 seconds
Average sleep time: 0.1002 seconds
With uvloop event loop:
Min sleep time: 0.0991 seconds
Max sleep time: 0.1011 seconds
Average sleep time: 0.1001 seconds
主要语言
Cython
星标
11.9k
派生
615
PR 合并指标
30 天内没有已合并 PR

贡献指南

这个仓库没有索引到贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

MagicStack/uvloop 的其他 Issue

查看 MagicStack/uvloop 的全部 Issue

相似的 Issue

更多 Backend & API Design Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。