gpt4 book ai didi

django - 在Django项目中订阅一个redis channel

转载 作者:IT王子 更新时间:2023-10-29 06:10:35 24 4
gpt4 key购买 nike

我有多个用 nodejs 或 python/django 或...编写的应用程序这些服务运行良好。但是需要相互之间进行发布/订阅异步通信。

在 nodejs 中没有问题,可以轻松地发布/订阅到任何 redis channel 。

问题:我的问题是如何持续订阅redis channel 并接收其他服务发布的数据?

注意:许多链接建议使用 django-channels。但我想那不是这样做的方法。如果可以,任何人都可以帮助我并提供有关如何操作的详细信息。

更新:默认情况下,Django 不像 nodejs 那样是基于事件的。因此,如果我使用 redis 客户端,我应该每秒检查一次 redis,看看是否有任何内容被发布。我认为仅在 Python 中使用一个 Redis 客户端是不够的。

非常感谢。

最佳答案

有很多选择。如果你有 FIFO问题您必须使用队列才能将一个微服务连接到另一个微服务。对我来说,如果你没有大数据问题,你可以使用 RabbitMQ , 很实用也很有效,否则如果你有大数据问题可以用Kafka .服务种类繁多。

如果您只想发布/订阅。最好的工具是 Redis,它非常快速且易于集成。如果您担心如何在 Python 中实现它,请查看 article

[更新]

可以在 django 中创建一个 manage.py 命令并在该管理文件中订阅 redis 并在与 django 服务器分离的情况下执行此脚本:

class Command(BaseCommand):
def handle(self, *args, **options):

r = redis.StrictRedis(host='localhost', port=6379, db=1)
p = r.pubsub()
p.psubscribe('topic.*')
for message in p.listen():
if message:
print('message received, do anything you want with it.')

关于django - 在Django项目中订阅一个redis channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54464994/

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