← 返回题库
中级

实现设备离线检测与自动恢复通知

未完成
中级参考 代码结构已给出,请填写 ____ 处
def solve():
    from pyodide.http import open_url
    from io import StringIO
    import pandas as pd
    devs_csv = open_url(____).read()
    devs = pd.read_csv(StringIO(____))
    import datetime
    EXPECTED_INTERVALS = {'____':____,'____':____,'____':____,'____':____}
    MISS_MULTIPLIER = ____
    def parse_ts(____):
        try: return datetime.datetime.strptime(str(____),'____').timestamp()
        except: return ____
    now_ts = datetime.datetime(____,____,____,____,____,____).timestamp()
    print(____)
    for _, dev in devs.iterrows():
        last_seen = parse_ts(____)
        interval = EXPECTED_INTERVALS.get(____)
        timeout = interval * MISS_MULTIPLIER
        elapsed = now_ts - last_seen
        status = '____' if elapsed > timeout else '____'
        print("____"+dev['____']+"____"+dev['____']+"____"+status+"____"+str(round(____))+"____"+str(____)+"____")

示例

输入
solve()
期望输出
Device heartbeat check:
  SOIL-A01(soil_sensor): ONLINE elapsed=300s timeout=1800s
  SOIL-A02(soil_sensor): ONLINE elapsed=300s timeout=1800s
  SOIL-A03(soil_sensor): ONLINE elapsed=900s timeout=1800s
  SOIL-B01(soil_sensor): ONLINE elapsed=420s timeout=1800s
  SOIL-B02(soil_sensor): ONLINE elapsed=600s timeout=1800s
  SOIL-B03(soil_sensor): ONLINE elapsed=600s timeout=1800s
  WS-001(weather_station): ONLINE elapsed=300s timeout=900s
  FERT-A01(fertigation_ctrl): OFFLINE elapsed=300s timeout=180s
  FERT-B01(fertigation_ctrl): OFFLINE elapsed=420s timeout=180s
  PEST-A01(pest_monitor): ONLINE elapsed=900s timeout=10800s
  PEST-B01(pest_monitor): ONLINE elapsed=1020s timeout=10800s
  LEAF-A01(leaf_sensor): ONLINE elapsed=600s timeout=1800s
  CO2-A01(co2_sensor): ONLINE elapsed=300s timeout=1800s
Python 代码 🔒 登录后使用
🔒

登录后即可练习

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