← 返回题库
中级

实现固定窗口限流算法

未完成
中级参考 代码结构已给出,请填写 ____ 处
def solve():
    from pyodide.http import open_url
    from io import StringIO
    request_logs_csv = open_url(____).read()
    rate_limit_config_csv = open_url(____).read()
    import pandas as pd
    from io import StringIO
    logs = pd.read_csv(StringIO(____))
    cfg = pd.read_csv(StringIO(____))
    order_cfg = cfg[cfg['____']=='____'].iloc[____]
    max_req = int(____)
    window = int(____)
    counters = {}
    allowed = denied = ____
    def fixed_window_check(____):
        nonlocal allowed, denied
        win_key = (ip, int(____) // window)
        counters[win_key] = counters.get(____) + ____
        if counters[win_key] <= max_req:
            allowed += ____; return True
        else:
            denied += ____; return False
    order_logs = logs[logs['____']=='____'].sort_values(____)
    for _, row in order_logs.iterrows():
        fixed_window_check(____)
    print(____)
    top_ips = order_logs.groupby(____).size().sort_values(____).head(____)
    print(____)
    for ip, cnt in top_ips.items(): print(____)

示例

输入
solve()
期望输出
固定窗口(10req/60s): allowed=15, denied=1
高频IP:
  10.0.0.1: 13 requests
  10.0.0.2: 2 requests
  192.168.1.10: 1 requests
Python 代码 🔒 登录后使用
🔒

登录后即可练习

注册免费账号,在浏览器中直接运行 Python 代码