Использование веб-сокетов с Django на движке Google App Engine Flex - PullRequest
1 голос
/ 27 мая 2020

В настоящее время я пытаюсь настроить гибкость движка Google App, используя структуру django с django -каналами. для моего текущего проекта мне нужен веб-сокет, поэтому я пытаюсь восстановить учебник, предлагаемый на веб-сайте, с помощью Django -каналов: https://channels.readthedocs.io/en/latest/tutorial/

В настоящее время я застрял на добавление Redis в мой экземпляр google-app-flex. Я следил за документацией Google по настройке соединения Redis - к сожалению, пример находится в Flask: google do c Я предполагаю, что моя ошибка тривиальна, и мне просто нужно подключить django CHANNEL_LAYERS к redis proporly.

выполнение sudo gcloud redis instances describe <redisname> --region=us-central1 дает мне следующий ответ:

Изображение: «Redis Describtion» Description Redis

выполнение sudo gcloud app describe, этот ответ:

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)],
        },
    },
}

что я делаю не так. как правильно подключиться к Redis, используя Django?

вот несколько ссылок:

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

Django , Redis: где разместить код подключения

Развертывание приложения Django каналов на движке Google Flex

Как подключиться к экземпляру Redis ( memorystore) из Standard App Engine от Google (Python 3,7)

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

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

1 Ответ

1 голос
/ 27 мая 2020

Моя ошибка в настройках. 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)],
        },
    },
}

...