Как уведомить клиента Python с сервера узла? - PullRequest
3 голосов
/ 25 октября 2019

У меня есть процесс узла, который в настоящее время получает запросы POST по номеру https://company/api/bats_hook/. Я хочу уведомить процесс Python о каждом поступлении задания. Я использую node_redis и redis-py, реализация выглядит следующим образом.

Следующий код прекрасно работает локально, когда процесс узла выполняется локально, когда я отправляю конечную точку узла на сервер, я не получаю события?

Как подписаться наконечная точка на сервере от клиента Python? Чего не хватает? У меня есть сервер redis, развернутый на сервере https://company/api/bats_hook/

javascript

    var redis = require("redis"),
    //redisClient = redis.createClient();
    redisClient = redis.createClient({url: process.env.REDIS_URL});

    app.post("/api/bats_holder", (req, res, next) => {
      console.log(req.query.params)
      console.log(req.body)
      console.log(req.body.name)
      // This publishes a message to the "bats hook channel"
      redisClient.publish("bats hook channel", JSON.stringify({
        params: req.query.params,
        body: req.body,
      }));
      res.status(200).json({
        message: "BATS object",
        posts: req.body
      }); 
    });

python

    import redis

    r = redis.Redis()
    p = r.pubsub()
    p.subscribe('bats hook channel')

    # This blocks and reads any messages from the "bats hook channel" as they come in
    for message in p.listen():
        print(message)

1 Ответ

2 голосов
/ 30 октября 2019

Это потому, что вы не настроили Redis URL в скрипте Python. Вот почему он использует конечную точку на локальном хосте по умолчанию. Обновите ваш скрипт следующим образом.

import os
import redis

REDIS_URL = os.environ.get('REDIS_URL', 'redis://localhost:6379/0')

r = redis.from_url(REDIS_URL)
p = r.pubsub()
p.subscribe('bats hook channel')

# This blocks and reads any messages from the "bats hook channel" as they come in
for message in p.listen():
    print(message)

Подробнее и примеры в документации .

...