gpt4 book ai didi

django - 在 Google App Engine Flex 上将 Websockets 与 Django 结合使用

转载 作者:行者123 更新时间:2023-12-03 06:37:54 26 4
gpt4 key购买 nike

我目前正在尝试使用带有 django-channels 的 django 框架来设置 Google 应用引擎 flex。对于我当前的项目,我需要一个 websocket,所以我正在尝试重建 Django-channels 在网站上提供的教程:https://channels.readthedocs.io/en/latest/tutorial/

目前我坚持将 redis 添加到我的 google-app-flex 实例。我按照关于设置 redis 连接的 google 文档进行操作 - 不幸的是,该示例在 Flask 中:google doc
我认为我的错误是微不足道的,我只需要适本地将 django CHANNEL_LAYERS 连接到 redis。

执行 sudo gcloud redis instances describe <redisname> --region=us-central1 给了我以下响应:

图片:“Redis 描述”
Description Redis

执行 sudo gcloud app describe ,这个 react :

Description App

我配置了我的 app.yaml 如下:

# app.yaml
# [START runtime]
runtime: python
env: flex
entrypoint: daphne django_channels_heroku.asgi:application --port $PORT --bind 0.0.0.0

runtime_config:
python_version: 3
automatic_scaling:
min_num_instances: 1
max_num_instances: 7

# Update with Redis instance IP and port
env_variables:
REDISHOST: '<the ip in "host" from "Redis Describtion" image above>'
REDISPORT: '6379'

# Update with Redis instance network name
network:
name: default

# [END runtime]

..并且在我的 settings.py 中,我将其添加为 redis 连接(顺便说一句,这感觉真的很错误):
#settings.py
import redis

#settings.py stuff...


#connect to redis
redis_host = os.environ.get('REDISHOST', '127.0.0.1')
redis_port = int(os.environ.get('REDISPORT', 6379))
redis_client = redis.StrictRedis(host=redis_host, port=redis_port)

# Channels
ASGI_APPLICATION = "django_channels_heroku.routing.application"
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
"hosts": [('127.0.0.1', 6379)],
},
},
}


我究竟做错了什么。我如何正确使用 Django 连接到 Redis?

这里有一些链接:

https://cloud.google.com/memorystore/docs/redis/connect-redis-instance-flex

Django, Redis: Where to put connection-code

Deploying Django channels app on google flex engine

How to connect to Redis instance (memorystore) from Google's Standard App Engine (Python 3.7)

https://cloud.google.com/memorystore/docs/redis/connect-redis-instance-flex

https://cloud.google.com/memorystore/docs/redis/quickstart-gcloud

最佳答案

我的错误是在settings.py中:

正确版本:

#settings.py

#settings stuff...

redis_host = os.environ.get('REDISHOST', '127.0.0.1')
redis_port = int(os.environ.get('REDISPORT', 6379))
#redis_client = redis.StrictRedis(host=redis_host, port=redis_port) #this is not needed

# Channels
ASGI_APPLICATION = "django_channels_heroku.routing.application"
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
"hosts": [(redis_host, redis_port)],
},
},
}

关于django - 在 Google App Engine Flex 上将 Websockets 与 Django 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62037134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com