首页 > 编程语言 >home-assistant core 源码粗读--程序入口篇(一)

home-assistant core 源码粗读--程序入口篇(一)

时间:2024-02-21 15:36:08浏览次数:28  
标签:core -- assistant runner 源码 home loop asyncio

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

相关文章

  • 承前启后,Java对象内存布局和对象头
    承前启后,Java对象内存布局和对象头大家好,我是小高先生。在我之前的一篇文章《并发编程防御装-锁(基础版)》中,我简要介绍了锁的基础知识,并解释了为什么Java中的任何对象都可以作为锁。在那里,我提到了对象头中有一个指向ObjectMonitor的指针,但没有深入探讨Java对象的内存结构。本文将......
  • Java的配置
    环境变量配置找到配置的位置右击此电脑-->属性-->高级系统设置-->环境变量-->系统变量配置Path环境变量(必须配置的)(目的:为了可以在任意目录下找到javac和java命令)方式1:直接在Path变量中添加jdk的bin目录的完整路径系统变量-->Path-->新建-->D:\soft\java\jdk\bin方式2:(推荐......
  • 一张图搞懂微服务架构设计
    前言当前,微服务架构在很多公司都已经落地实施了,下面用一张图简要概述下微服务架构设计中常用组件。不能说已经使用微服务好几年了,结果对微服务架构没有一个整体的认知,一个只懂搬砖的程序员不是一个好码农。流量入口Nginx在上图中可以看到,Nginx作为整个架构的流量入口,可以理解......
  • CompletableFuture异步编程详解
    Future介绍先来回顾下Future,Future是JDK1.5中添加的接口,主要功能为:获取并发的任务完成后的执行结果;能够取消并发执行中的任务;判断并发任务是否执行完成;但Future也有着非常明显的缺点:阻塞:调用get()方法会一直阻塞,直到等待直到计算完成;异常处理:Future没有提供任何异常处理的方......
  • 胡桃摇出自哪里
     胡桃摇出自哪里   胡桃摇出自哪里胡桃摇这个梗源自于游戏《原神》中的角色胡桃。在游戏内,胡桃在出场时会随着音乐左右摇摆,并且展现出各种表情包,因其可爱的动作和表情,给玩家留下了深刻的印象。这个梗随后在游戏社区中流行起来,成为了一种流行的表情包......
  • 中国特色AI创业:在OpenAI阴影下的探索与挑战
    在中国特色背景下,AI创业领域的一些荒诞现象以及对AI创业者、投资人的心态和影响。同时,OpenAI的强大影响力和国内AI领域的创业现状。首先,小红书上关于中国版Sora项目的荒诞段子,揭示了部分人对AI创业者及整个创业者群体的刻板印象。这种印象可能是因为一些创业者试图通过模仿或借鉴......
  • C#中判断Ip地址能否ping通
    有的时候,哪怕ip地址的格式是正确的,但是也有可能是一个不可到达的ip地址或者不在同一个子网,这种时候如果不做处理,很有可能会导致程序的连接出现问题从而崩溃。请尝试下面的代码:1staticboolPingIPAddress(stringipAddress,stringtargetIpAddress)2{3try4......
  • WMTS API——wmts1.0.0.htm
    WMTS,Web地图瓦片服务(WebMapTileService)当前版本是1.0.0。WMTS标准定义了一些操作,这些操作允许用户访问瓦片地图。WMTS可能是OGC首个支持RESTful访问的服务标准。参考:https://baike.baidu.com/item/WMTS/1091367?fr=ge_alaArcGISServer10.1之服务新特性(WMTS1.0.0)ArcGISServ......
  • 记录一次如何给openai (chatgpt api 调用)充值的经历
    网上有很多通过支付宝充值apple礼品卡的教程,能成功充值chatgpt-plus,我也成功充值了。但这个账号不能在自己的服务中调用api,需要额外充值,本次是记录如何给openaiapi 接口调用充值https://platform.openai.com/account/billing/payment-methods  用fomepay成功充值的经历......
  • 如何安装多个版本的node,再也不用担心版本高低引发的一系列问题
    简介最近好多人都问到node怎么同时安装多个版本?如何配置node的环境变量,如何自如的在多个版本中切换node?还有就是自己在做appium自动化的时候,有时候会因为node的版本过高或者是太低用命令启动appium时候而报错,试了一下是否可以安装一个高版本和低版本的node在一个系统中,你......