core 源码地址 : https://github.com/home-assistant/core/tree/master
core 与其他container等版本区别见: https://www.home-assistant.io/installation/
入口: homeassisstant/__main__.py 难点: faulthandler【错误记录的包,C语言编写】, parser.add_mutually_exclusive_group() 【参数互斥组,传参的时候,组内的参数最多只允许出现一个】
L190: safe_mode = config.safe_mode_enabled(config_dir) 这个安全模式有啥左右,没看懂~~
L192: runner.RuntimeConfig 类使用了@dataclasses.dataclass(slots=True) , 感觉跟继承pydantic.BaseModel的作用一样。
程序执行: exit_code = runner.run(runtime_conf)
跳到 runner.run所在的代码行中:homeassisstant/runner.py L180
对asyncio内部的EventLoopPolicy, 重写asyncio的事件循环。
L185: asyncio.new_event_loop 可以全量搜索一下代码,其他非入口代码中(非测试)不再new loop, 如果使用了loop,直接使用了asyncio.get_running_loop() 【协程函数内部使用】
总协程函数的入口: L188 setup_and_run_hass
标签:core,--,assistant,runner,源码,home,loop,asyncio From: https://www.cnblogs.com/xunhanliu/p/18025299