【发布时间】:2020-07-16 21:51:23
【问题描述】:
我有以下基本的 Django 频道消费者:
class EchoConsumer(AsyncJsonWebsocketConsumer):
async def connect(self):
await self.accept()
await self.send_json('Connected!')
同时,我有一个普通的 Python 脚本,它连接到 websocket 并实时接收一些数据:
from binance.client import Client
import json
from binance.websockets import BinanceSocketManager
client = Client('', '')
# get all symbol prices
prices = client.get_all_tickers()
trades = client.get_recent_trades(symbol='BNBBTC')
# start aggregated trade websocket for BNBBTC
def process_message(message):
JSON1 = json.dumps(message)
JSON2 = json.loads(JSON1)
#define variables
Rate = JSON2['p']
Quantity = JSON2['q']
Symbol = JSON2['s']
Order = JSON2['m']
print(Rate, Quantity, Order)
bm = BinanceSocketManager(client)
bm.start_trade_socket('BNBBTC', process_message)
bm.start()
我想做以下事情:第二个脚本应该以某种方式将该数据发送给 Django Channels 消费者,而不是只打印接收到的数据。每当用户打开页面时,该页面都应该收到该数据。如果第二个用户同时打开该页面,则该第二个用户也应该收到数据。是否有可能做到这一点?我应该使用其他服务吗?
【问题讨论】:
-
您希望从哪里向您的 Django 频道发送数据?其他问题中有很多示例,例如:stackoverflow.com/questions/51725863/… 和stackoverflow.com/questions/57886187/…、medium.com/@ksarthak4ever/… 如果它们解决了您的问题,您是否尝试过这些教程和想法?
-
我有一个在服务器上运行的“数据收集器”应用程序,然后我有我的 Django 应用程序,我需要将数据从我的数据收集器发送到 Django 应用程序。我去看看你的教程!我想我找到了一个解决方案,这将是一个使用 Redis 的 PUB/SUB 系统
-
使用队列是一个很好的解决方案 ;-)
-
是的!只需要看看它的可扩展性如何。我还想过把我的数据收集器变成一个 websocket 服务器并直接从我的 Django 前端连接到它,但如果这个不起作用,它将是第二个选择
-
检查这个例子:steelkiwi.com/blog/…
标签: python django websocket django-channels