在googleappengine flex上使用带有django的websockets

3z6pesqy  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(407)

我目前正在尝试使用带有django频道的django框架来设置googleappengineflex。对于我目前的项目,我需要一个websocket,所以我试图重建django频道在网站上提供的教程:https://channels.readthedocs.io/en/latest/tutorial/
目前,我一直致力于将redis添加到我的googleappflex示例中。我按照google文档建立redis连接——不幸的是,这个例子在flask中:google doc我假设我的错误很小,我只需要按比例将django channel\u层连接到redis。
执行 sudo gcloud redis instances describe <redisname> --region=us-central1 给了我以下回应:
图片:“redis描述”

执行 sudo gcloud app describe ,此响应:

我配置了我的 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:连接代码放在哪里
在googleflex引擎上部署django频道应用程序
如何从google的标准应用程序引擎(Python3.7)连接到redis示例(memorystore)
https://cloud.google.com/memorystore/docs/redis/connect-redis-instance-flex
https://cloud.google.com/memorystore/docs/redis/quickstart-gcloud

hujrc8aj

hujrc8aj1#

我的错误在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)],
        },
    },
}

相关问题