Python脚本通过WebSocket与Django渠道进行通信

时间:2018-12-20 19:33:48

标签: python django websocket channels

正在寻找一些指导或建议。

我在Web服务器上设置了Django通道,该通道允许两个用户使用Redis和Websocket在彼此之间聊天。

如何设置独立的python脚本,以便它可以通过用户在Django中发送的websocket消息进行通信并接受命令

目标是通过Django渠道websockets控制此独立的python脚本。 python脚本运行物理马达,因此一些示例函数为Start()和Stop()。

编辑:看起来我想要的是设置celery以控制python脚本,但是让django频道在t开始和停止时控制celery应用程序:https://vincenttide.com/blog/1/django-channels-and-celery-example/

1 个答案:

答案 0 :(得分:0)

您可以使用python编写一个连接到服务器的websocket客户端。有很多方法可以做到这一点。例如,您可以使用库websocket

示例代码如下:

#!/usr/bin/env python

import asyncio
import websockets

ws_url = "ws://domain_of_your_server:8000/ws/"

async def command_receiver():
    async with websockets.connect(ws_url) as websocket:
        while True:
            message = await websocket.recv()
            await websocket.send("Received the command '{message}'")
            if message == "start":
                # run the start command
                ...
            elif message == "stop":
                # run the stop command
                ...
            else:
                await websocket.send("Unknown command")     


asyncio.get_event_loop().run_until_complete(command_receiver())