连接到 localhost:6379 时出现错误 99。无法分配请求的地址

2024-04-04

设置: 我有一个虚拟机,并在虚拟机中运行三个容器(一个 nginx 代理、一个非常简约的 Flask 应用程序和 redis)。 Flask 应在端口 5000 上提供服务,而 redis 应在 6379 上提供服务。

这些容器中的每一个都可以作为独立服务正常运行,但也可以通过 docker compose 来使用作为一项服务.

在 Flask 应用程序中,我的目标是连接到 Redis 并查询一些密钥。

nginx容器暴露端口80、flask端口5000和redis端口6379。

在 Flask 应用程序中,我有一个尝试创建 Redis 客户端的函数

db = redis.Redis(host='localhost', port=6379, decode_responses=True)

运行 Flask 应用程序时出现端口无法使用的错误

redis.exceptions.ConnectionError: Error 99 connecting to localhost:6379. Cannot assign requested address.

我不清楚可能导致此问题的原因,任何想法将不胜感激。


在 Flask 应用程序中,我有一个尝试创建 Redis 客户端的函数

db = redis.Redis(host='localhost', port=6379, decode_responses=True)

当你的烧瓶进程在容器中运行时,localhost指容器本身的网络接口。它不会解析为您的 docker 主机的网络接口。

所以你需要更换localhost与运行 redis 的容器的 IP 地址。

在 docker-compose.yml 文件的上下文中,这很容易,因为 docker-compose 将使服务名称解析为正确的容器 IP 地址:

version: "3"
services:
  my_flask_service:
    image: ...
  my_redis_service:
    image: ...

然后在你的烧瓶应用程序中,使用:

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

连接到 localhost:6379 时出现错误 99。无法分配请求的地址 的相关文章

随机推荐

  • 如何在这个线性模型中强制删除截距或等效项?

    考虑下表 DB lt data frame Y rnorm 6 X1 c T T F T F F X2 c T F T F T T Y X1 X2 1 1 8376852 TRUE TRUE 2 2 1173739 TRUE FALSE 3
  • Laravel Model->save() 返回 false 但没有错误

    通常当我打电话时Model gt save 它成功地在数据库中创建了新记录 我正在尝试调试没有发生任何事情的情况Model gt save 返回假 我怎样才能知道发生了什么 user new User user gt fields exam
  • Confluence Schema 注册表持久化

    我希望即使服务器重新启动也能够保留具有固定 id 的模式 是否可以将架构保留在架构注册表中 以便在服务器崩溃后使它们具有相同的 id 否则 当模式注册服务器启动时 是否可以对具有固定 id 的模式进行硬编码 这就是模式注册的目的 模式有一个
  • Whatsapp消息自动回复方法

    我在play store上看到很少有应用程序支持WhatsApp的自动回复 我在网上搜索了方法 但我找到的只是这段代码 Uri uri Uri parse smsto 99 Intent i new Intent Intent ACTION
  • Jquery 延迟加载回调

    我目前正在使用Jquery 延迟加载 http www appelsiini net projects lazyload我想知道当我的容器中的所有图像结束加载时 当延迟加载发挥了所有魔力时 是否有一种方法可以进行回调 原因是我正在使用jSc
  • 如何将虚拟机组合到 Aurelia 验证渲染器中的视图中

    我正在尝试使用 aurelia validation 插件对表单执行验证 我正在创建一个自定义验证渲染器 它将更改输入框的颜色并在框旁边放置一个图标 单击或悬停该图标时 会出现一条弹出消息 其中显示实际的错误消息 目前 我正在渲染器中手动渲
  • 在 django 中处理动态 MultipleChoiceField

    到目前为止我看到的所有答案都让我感到困惑 我制作了一个根据传入的参数以及数据库中存储的问题动态构建的表单 这一切都工作正常 注意 它不是一个 ModelForm 只是一个 Form 现在我正在尝试保存用户的响应 我如何迭代他们提交的数据以便
  • SwiftUI:仅在 iOS 14+ 上使用“accessibilityIdentifier”

    给出以下代码 struct CopyButtonStyle ButtonStyle init func makeBody configuration Configuration gt some View let copyIconSize C
  • SQL 比较每小时总订单并删除当前库存可能吗?

    不确定是否可以单独使用 sql 来完成此操作 但我宁愿询问然后向流程添加另一个步骤 比如说我有一组虚拟订单 Supplier Destination Req Time Prd Code Prd Description Qty A B 01
  • 什么是日志记录?如何使用 Apache Commons 日志记录?

    Web 应用程序服务器希望记录哪些信息 为什么 据我了解 org apache commons logging Log 是一个抽象了其他Logging类提供的功能的接口 这同样适用于接口LogFactory 我试图理解的代码有 Log au
  • jQuery Mobile:页面事件触发的顺序是什么?

    我必须快速构建应用程序的原型 并且我想确切地知道在哪里插入各种应用程序逻辑 您能否迭代使用 PhoneGap 和 jQueryMobile 时的事件及其触发顺序 如果能够清楚地了解以下事件 顺序 那就太好了 A 当您第一次打开应用程序时 B
  • 在 gradle-node-plugin 中配置 nodeModulesDir

    我尝试设置 npm 包的缓存 这是我的插件配置 node version 4 5 0 npmVersion 3 10 6 distBaseUrl https nodejs org dist download true workDir fil
  • 如何对 MySQL 中的 UNION 查询中的多个字段求和?

    我目前正在学习如何使用MySQL在查询中我陷入了两难的境地 目前 我有 2 个查询从多个表中获取数据 两个查询都包含相同数量的列字段和字段名称 为简单起见 查询的输出如下所示 查询一 FieldOne FieldTwo FieldThree
  • Android上如何实现app子组件的模块化结构?

    我的 Android 主应用程序将包含一个主程序 以及一些预安装的模块 然后我想稍后提供不同的模块 最好作为单独的文件 模块如 位置 天气 议程 你将如何实现这一目标 我想将已安装 存在的模块保留在数据库中 因此 有时我必须将模块放入数据库
  • ng-grid 中的默认 headerCell 模板

    考虑以下 angularJs 代码片段 var myHeaderCellTemplate div class div class ngHeaderText col displayName img src PLUS ICON png div
  • 设置自定义 Git 安装

    我希望将 Git 安装在不同于默认位置的自定义位置usr local git bin git软件包安装程序所在的目录http git scm com http git scm com 网站安装到 例如 我只是尝试复制内容usr local
  • 如何将 TLD 和 Tag Lib 文件添加到 Maven 的 jar 项目中

    我有一个 Maven 项目 打包为jar 我还有一个 Maven 项目 打包为war 这个 war 项目有一个 tld 文件和一些 xhtml 文件 标签库 战争项目的结构 基本上 是 pom xml src main java webap
  • Angular7 中的来源“http://localhost:4200”已被 CORS 策略阻止

    我想使用http 5 160 2 148 8091 api trainTicketing city findAll http 5 160 2 148 8091 api trainTicketing city findAll在我的角度项目中休
  • 如何检测首选项是否发生更改?

    我有一个类扩展 PreferenceActivity 并显示我的应用程序的首选项屏幕 是否可以检查首选项是否有任何更改 这有助于 http developer android com reference android content Sh
  • 连接到 localhost:6379 时出现错误 99。无法分配请求的地址

    设置 我有一个虚拟机 并在虚拟机中运行三个容器 一个 nginx 代理 一个非常简约的 Flask 应用程序和 redis Flask 应在端口 5000 上提供服务 而 redis 应在 6379 上提供服务 这些容器中的每一个都可以作为