django - 如何在 django 中向消费者发送信号?
问题描述
我正在用 Django 开发 WebSocket 程序。我想接收来自客户端(ReactJS)的请求并向 WebSocket 消费者发送信号,然后 WebSocket 消费者向客户端发送消息。如何解决这样的问题?
我尝试如下。
- 网址.py
urlpatterns = [
url(r'^updatesignal/$',updatesignal),
url(r'^stopsignal/$',stopsignal),
]
- 视图.py
@api_view(['POST'])
def updatesignal(request):
print("update")
consumers.isconnected = 1
return Response("update signal")
@api_view(['POST'])
def stopsignal(request):
print("stop signal")
consumers.isconnected = 0
return Response("stop signal")
- 消费者.py
from channels.generic.websocket import AsyncWebsocketConsumer
import json
import asyncio
isconnected = 0
class ChatConsumer(AsyncWebsocketConsumer):
async def connect(self):
print("connect")
await self.accept()
while isconnected == 1:
await asyncio.sleep(2)
print("true")
# obj = # do_something (Ex: constantly query DB...)
await self.send(text_data=json.dumps({
'message': "aaa"
}))
async def disconnect(self, close_code):
# Leave room group
pass
async def receive(self, text_data):
# Receive message from WebSocket
.....
但是 WebSocket 消费者在收到更新信号请求后 10 秒后被触发。如何解决这个问题呢?
解决方案
推荐阅读
- r - 如何根据一列删除数据框中的有效行和重复行?
- parallel-processing - 将 MPI_SENDRECV 与 4 个线程一起使用时出现问题
- python - 使用联合或交集函数时如何获取布隆过滤器集的大小?
- javascript - Express.JS 上的会话 Cookie
- sql - 如何将记录类型转换为 jsonb 或使用诸如 <@ bewteen jsonb 之类的运算符并在 postgresql 中记录?
- angular - Angular无法通过数组读取未定义循环的属性
- swift - 如果文本字段中的字符串为空,如何不添加单元格?
- python - 重命名数据框中的相同标签
- angular - 创建组件并附加到 div
- scala - 如何将集合作为新列附加到具有多列的 DataFrame?