Могу ли я использовать Redis, установленный в подсистеме Windows для Linux, с приложением python в Windows? - PullRequest
0 голосов
/ 18 мая 2019

Я хотел бы разработать приложение под Python для Windows, которое будет использовать Redis в качестве брокера для Celery.Правильно ли предположить, что мое приложение может взаимодействовать с экземпляром Redis, который я установил в подсистеме Windows для Linux?

Я включил подсистему Windows для Linux в Windows 10 и установил Ubuntu и Redis наэто и запустил сервер.Что касается Windows, я использую VSCode для написания кода Python.Как показано ниже, в моем коде Python я пытаюсь подключиться к Redis на локальном хосте: 6379

from celery import Celery

BROKER_URL = 'redis://localhost:6379/0'

app = Celery('tasks', broker=BROKER_URL)

Я пытаюсь подтвердить, может ли мой код Python, написанный в Windows, взаимодействовать с сервером Redis.запустить на Ubuntu.Возможно ли это, и если да, то как я могу подтвердить соединение?

1 Ответ

0 голосов
/ 18 мая 2019

Да, вы можете использовать Redis из WSL из Windows. Сначала убедитесь, что вы установили и запустили сервис redis:

sudo apt-get install redis-server
sudo systemctl enable redis-server.service

Если вы уже запускаете сервер Redis в Windows, вам нужно отредактировать директиву порта в /etc/redis/redis.conf (например, до 7379, как я делал для приведенных ниже команд).

Затем запустите службу

sudo service redis-server start

, затем запустите redis-cli и введите команду monitor (вы можете пропустить -p 7379, если используете порт по умолчанию):

bp@bjorn8:~$ redis-cli -p 7379
127.0.0.1:6379> monitor
OK

теперь из командной строки Windows установите модуль redis из pypi (https://pypi.org/project/redis/):

pip install redis

затем запустите python и введите тестовую команду (снова используйте 6379, если вы используете порт по умолчанию):

>>> import redis
>>> cn = redis.Redis('localhost', 7379, 0)
>>> cn.keys("*")
[]

в вашем wsl-сеансе вы должны увидеть что-то вроде:

1558196107.718695 "KEYS" "*"

Примечание: Redis не совсем понятно, где находится сервер. Если у вас установлены инструменты cli в windows, вы можете вводить команды от dos на сервер, работающий на wsl:

c:\srv> redis-cli -p 7379
redis 127.0.0.1:7379> keys "*"
(empty list or set)
redis 127.0.0.1:7379>

и наоборот (redis-cli на wsl будет успешно подключаться к службе redis, работающей на windows - как я обнаружил, мне нужно было указать разные порты; -)

...