有没有办法强制执行模块间依赖/初始化顺序?

2023-12-08

使用Azure IoT Edge,我还没有找到任何方法来保证部署中容器/模块的初始化顺序。举例来说,假设我有 2 个模块,A 和 B。A 是服务器,B 是依赖于 A 的客户端。据我所知,无法保证 A 在 B 之前启动。

Azure IoT Edge 部署模板符合 Docker 引擎 API,但我找不到任何通过该 API 强制执行依赖关系的方法。作为解决方法,我不对每个容器的代码中正在运行哪些容器进行假设。这是可行的,尽管额外代码的开销并不理想,特别是考虑到像 docker-compose 这样的工具会使强制初始化顺序变得相当简单。

我想做这样的事情(src:https://docs.docker.com/compose/compose-file/):

version: "3.7"
services:
  web:
    build: .
    depends_on:
      - db
      - redis
  redis:
    image: redis
  db:
    image: postgres

作为解决方法,按照上面的示例,在web容器我一直在做类似以下的事情来确保postgres之前已启动并运行web施行postgres相关动作:

postgresIsUp = False
while not postgresIsUp:
    try:
        pingPostgres()
        postgresIsUp = True
    except PingError:
        print("postgres is not yet running")

当然,这是一个带有明显缺陷的人为示例,但它展示了解决方法的要点。


不,IotEdge 不支持按特定顺序初始化模块。 请注意,即使可以按特定顺序启动它们来解决依赖关系,如果其中一个模块崩溃,您仍然会遇到问题。它会被 EdgeHub 重新启动,但你会失去初始化的顺序。

Mike Yagley(IotEdge 的贡献者之一)对此问题给出了解释github.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法强制执行模块间依赖/初始化顺序? 的相关文章

随机推荐

  • 使用 PHP 访问 Windows 共享

    我需要使用 PHP 访问 Windows 共享上的 Excel 文件 但似乎遇到了身份验证问题 我在用着PHP ExcelReader打开并读取文件 在我的本地计算机上工作正常 但我放置它的服务器无权访问此共享 因此它告诉我该路径不可读 我
  • 如何使用 OleDB 避免 Excel 文件中的空行?

    我开始使用OleDB 我正在尝试从 Excel 文件 C 中 中提取大量随机数据 这是我的查询 SELECT FROM NAMED RANGE 但我有很多空行 我循环删除它们 但我不太喜欢它 是否可以仅选择至少填充了一个单元格的行 此致 A
  • 连接 MongoDB 中的两个集合

    我是 mongoDB 的初学者 我有两本收藏书和作者 姓名和作品 分别是公共栏 使用内部联接 我必须发出 Book 和 Author 中的一些列 就像这个 sql 查询 select book name book editions book
  • 用于单击网页按钮的 Python 脚本

    我有一个 python 脚本 它使用 requests 库将数据发送到 django 应用程序 然后用户切换到网页并单击一个按钮来获取编辑表单以添加一些附加信息 我希望请求收到状态代码 200 后立即切换到网页并自动单击按钮 而不是用户每次
  • 如何从 json 结果中快速删除可选文本

    我正在使用 newsApi 从中获取新闻列表 我根据新闻的属性创建了模型 所有属性在模型中都是可选的 当我解析它时 它会打印到控制台获取结果 但所有字段都有带有可选文本的数据 我创建了三个基于新闻 api 字段的结构 它们就像 struct
  • 检索数据库中所有表的列表

    我在通常的数据库文件夹下有这个数据库文件 里面有一堆表 请注意 我不想在命令行下检索 我知道我可以使用 tables 命令 我想使用代码检索其中所有表的列表 以便我可以对每个表执行一些特定的算法 另外 我在Android上没有发现任何与此问
  • 服务器发送的事件不适用于球衣 SSE

    我正在尝试使用来自 Jersey 的 JavaScript SSE 我的资源中有以下代码 我在 Java7 和 Tomcat 7 上托管 我没有收到任何错误 但我在页面上也看不到数据 I call broadcast发布数据 它确实显示消息
  • Spark - 带有递归的窗口? - 有条件地跨行传播值

    我有以下数据框显示购买收入 user id visit id revenue 1 1 0 1 2 0 1 3 0 1 4 100 1 5 0 1 6 0 1 7 200 1 8 0 1 9 10
  • UIButton 单击事件在自定义 UITableViewCell 内多次调用

    我有一个习惯UITableViewCell其中有一个UIButton在里面 单击按钮时 单击事件将被多次调用 这是我正在使用的代码 自定义单元格 cs public static CustomCell Create return Custo
  • 如何以编程方式在虚拟现实模式下打开街景?

    使用以下代码 我使用特定位置的纬度和经度打开街景视图 Intent streetView new Intent android content Intent ACTION VIEW Uri parse google streetview c
  • C++:如何在 iOS 中已有的 MFC 应用程序中重用加密的 Sqlite 数据库

    我正在进行一个想要重用的项目SQLite的数据库iOS应用程序在我的MFC C 应用 The iOS数据库使用 sqlite3 key 加密 并且使用SQL密码用于数据库处理 And 我在用SQLite 加密借助以下工具进行数据库处理Cpp
  • 如何将 3D 字符数组传递给函数

    我有一个 3D 字符数组 table 我想将其传递给 void 函数 以便它可以对其进行更改 我怎样才能做到这一点 void make char minor char greater 20 30 50 make greater 我想这不会起
  • iOS 自动布局按比例调整 UIView 的大小?

    I m trying to learn Autolayout so I m reading through tutorials and also messing around with some UIViews just to see wh
  • “$”未被识别为内部或外部命令

    我已经广泛搜索了这个问题的答案 但没有找到解决我的特定问题的答案 这就涉及到windows中的命令行了 我正在尝试遵循有关使用 npm 的教程 本教程中的所有命令都以 这个符号开头 即美元符号 当我输入 npm config list 来获
  • 混淆批处理+HTA混合脚本

    以下是混合批处理脚本
  • Safari 推送通知证书问题

    我有一个网站 它使用 Safari 浏览器的推送通知 它工作得很好 直到最近我开始收到一条消息说 推送包签名验证失败 我相信这与最近的 Apple WWDRCA 证书到期有关 现在正在尝试将新证书安装到系统中 他们的文档说 如果您使用 op
  • netezza nzload 与 isnumeric 类似的功能吗?

    我有来自一个平面文件的数据 我正在通过该文件加载到 netezza 中nzload 某些字段类型是数字 但是接收到的数据有时可能包含无效字符 我如何检查以确保数据isnumeric在我的进口中 I saw try cast对于 T Sql
  • 当我从 pandas DataFrame 中采样一行后,如何获取一个单元格的值?

    我有一个pandas我已经成功地从 DataFrame 中采样了一行 但问题之一是它只是返回另一个 DataFrame 我需要读取返回的行并获取该行的特定元素的值 My DataFrame好像 Date Open High Low Clos
  • 如何在Amazon ec2上运行seed.rb文件

    最近 我使用 Amazon EC2 托管了 Ruby on Rails 应用程序弹性豆茎 除了我的 seeds rb 文件之外 一切正常 我的 seeds rb 文件在托管时未执行 我在用活动管理员我还在 seeds rb 文件中定义了第一
  • 有没有办法强制执行模块间依赖/初始化顺序?

    使用Azure IoT Edge 我还没有找到任何方法来保证部署中容器 模块的初始化顺序 举例来说 假设我有 2 个模块 A 和 B A 是服务器 B 是依赖于 A 的客户端 据我所知 无法保证 A 在 B 之前启动 Azure IoT E