【发布时间】:2020-02-05 03:48:12
【问题描述】:
我想在保存模型时通知客户。 我首先在 post_save 上创建了一个 django-signal。
@receiver(post_save, sender=Scooter)
async def scooter_post_update(sender, instance, created, **kwargs):
# Notify client here
接下来我从 django-channels 创建了 AsyncConsumer 类并提供了它的路由。
// routing.py
application = ProtocolTypeRouter({
# Empty for now (http->django views is added by default)
'websocket': AllowedHostsOriginValidator(
AuthMiddlewareStack(
URLRouter(
[
path('scooters/', ScootersUpdateConsumer)
]
)
)
)
})
// consumers.py
class ScootersUpdateConsumer(AsyncConsumer):
async def websocket_connect(self, event):
print("Connected!", event)
await self.send({
"type": "websocket.accept"
})
async def send_message(self):
await self.send({
"type": "websocket.send",
'text': 'Oy, mate!'
})
async def websocket_receive(self, event):
print("Receive!", event)
async def websocket_disconnect(self, event):
print("Disconnected!", event)
现在我的问题是如何从 scooter_post_update() 方法调用 send_message()。
【问题讨论】:
标签: python django websocket django-channels django-signals