Python 渠道“U redis提高”;“名称或服务未知”;在docker中构建网络模式桥
我有一个Python 渠道“U redis提高”;“名称或服务未知”;在docker中构建网络模式桥,python,django,python-3.x,redis,django-channels,Python,Django,Python 3.x,Redis,Django Channels,我有一个django应用程序,它使用频道,频道_redis和石墨烯订阅石墨烯订阅用于在保存数据库模型实例时通过通道发布消息(数据库模型实例.save()) Django应用程序和redis(当然还有fullstack应用程序的其他部分)使用docker compose运行单独的docker容器。当我在Linux上以网络模式主机运行docker compose安装程序时,一切都很好。但是,如果使用自定义网络(一个用于后端,一个用于前端)重新配置网络模式网桥的设置,并使用docker compose
django
应用程序,它使用频道
,频道_redis
和石墨烯订阅
<代码>石墨烯订阅用于在保存数据库模型实例时通过通道发布消息(数据库模型实例.save()
)
Django应用程序和redis(当然还有fullstack应用程序的其他部分)使用docker compose
运行单独的docker容器。当我在Linux上以网络模式主机运行docker compose安装程序时,一切都很好。但是,如果使用自定义网络(一个用于后端,一个用于前端)重新配置网络模式网桥的设置,并使用docker compose
运行设置,则会出现以下错误:
c|u backend | File“/APP_SPECIFIC_PATH/File.py”,函数中的第X行
c|后端|数据库|模型|实例.save()
c|u backend | File“/usr/local/lib/python3.7/site packages/django/db/models/base.py”,第746行,保存
c|U后端|强制更新=强制更新,更新字段=更新字段)
c|u backend | File“/usr/local/lib/python3.7/site packages/django/db/models/base.py”,第795行,在save|u base中
c|u backend | update_fields=update_fields,raw=raw,using=using,
c|u backend | File“/usr/local/lib/python3.7/site packages/django/dispatch/dispatcher.py”,第175行,在send中
c|后端|用于自身中的接收者|实时|接收者(发送者)
c|u backend | File“/usr/local/lib/python3.7/site packages/django/dispatch/dispatcher.py”,第175行,在
c|后端|用于自身中的接收者|实时|接收者(发送者)
c|u backend | File“/usr/local/lib/python3.7/site packages/graphene_subscriptions/signals.py”,post_save_subscription中的第15行
c|后端|事件发送()
c|u backend | File“/usr/local/lib/python3.7/site packages/graphene_subscriptions/events.py”,第20行,在send中
c|u backend |“subscriptions”,{“type”:“signal.fired”,“event”:self.to_dict()}
c|u backend | File“/usr/local/lib/python3.7/site packages/asgiref/sync.py”,第116行,在|u调用中__
c|后端|返回调用_result.result()
c|u backend | File“/usr/local/lib/python3.7/concurrent/futures/_base.py”,结果第428行
c_backend |返回self.u获取结果()
c|u backend | File“/usr/local/lib/python3.7/concurrent/futures/_base.py”,第384行,在“获取结果”中
c|后端|自我提升。|例外
c|u backend | File“/usr/local/lib/python3.7/site packages/asgiref/sync.py”,第156行,主包装中
c|U后端|结果=等待自我。等待(*args,**kwargs)
c|u backend | File“/usr/local/lib/python3.7/site packages/channels_redis/core.py”,第614行,在发送组中
c|后端|异步,以self.connection(self.consistent|u hash(group))作为连接:
c|u backend | File“/usr/local/lib/python3.7/site packages/channels_redis/core.py”,第835行,在__
c|u backend | self.conn=等待self.pool.pop()
c|u backend | File“/usr/local/lib/python3.7/site packages/channels_redis/core.py”,第73行,以pop格式
c|u backend | conns.append(等待aioredis.create_redis(**self.host,loop=loop))
c|u backend | File“/usr/local/lib/python3.7/site packages/aioredis/commands/_init___;.py”,第175行,在create_redis中
c|U后端|循环=循环)
c|u backend | File“/usr/local/lib/python3.7/site packages/aioredis/connection.py”,第113行,创建|u连接
c|U后端|超时)
c|u backend | File“/usr/local/lib/python3.7/asyncio/tasks.py”,第414行,等待
c|U后端|返回等待未来
c|u backend | File“/usr/local/lib/python3.7/site packages/aioredis/stream.py”,第24行,打开|u连接
c|后端| lambda:协议、主机、端口,**kwds)
c|u backend | File“/usr/local/lib/python3.7/asyncio/base|u events.py”,第909行,在create|u connection中
c|u backend | type=socket.SOCK|u STREAM,proto=proto,flags=flags,loop=self)
c|u backend | File“/usr/local/lib/python3.7/asyncio/base|u events.py”,第1286行,在(确保)中
c|U后端| proto=proto,flags=flags)
c|u backend | File“/usr/local/lib/python3.7/asyncio/base|u events.py”,第788行,在getaddrinfo中
c|后端|无、getaddr|u func、主机、端口、系列、类型、协议、标志)
c|u backend | File“/usr/local/lib/python3.7/concurrent/futures/thread.py”,第57行,运行中
c|u backend | result=self.fn(*self.args,**self.kwargs)
c|u backend |文件“/usr/local/lib/python3.7/socket.py”,第752行,在getaddrinfo中
c|u backend |用于_socket.getaddrinfo中的res(主机、端口、系列、类型、协议、标志):
c|u backend | socket.gaierro:[Errno-2]名称或服务未知
我的开发配置如下所示
settings.py
文件摘录:
CHANNEL\u层={
“默认值”:{
“后端”:“channels\u redis.core.RedisChannelLayer”,
“配置”:{
“主机”:[(“redis”,6379)],
},
},
}
redis.conf
文件摘录:
#bind 127.0.0.1
保护模式编号
nginx.conf
文件摘录:
上游django{
服务器django:8080;
}
服务器{
听八千;
听[:]:8000;
位置/graphql/订阅{
代理通行证http://django/graphql/subscriptions;
proxy_http_版本1.1;
代理设置头升级$http\U升级;
代理设置头连接“升级”;
代理_重定向关闭;
代理设置头主机$Host;
代理集头X-Real-IP$remote\u addr;
proxy\u set\u header X-Forwarded-For$proxy\u add\u X\u Forwarded\u For;
代理\u集\u头X转发主机$server\u名称;
}
}
docker compose.yml
文件摘录:
版本:“3.5”
服务:
redis:
图片:redis:5.0.7-alpine
主机名:redis
容器名称:c_redis
网络:
-nw_后端
端口:
- "6379:6379"
卷数: