如何解决.save 方法未触发信号
我想为警报创建一个流式 API(服务器发送的事件),即新添加的警报应该作为服务器发送的事件发送到打开的连接。为此,我正在使用 StreamingHttpResponse。标头设置为文本/事件流,因为它应该用于 SSE。我有一个模型可以处理数据库中的警报。我已经编写了一个signals.py 文件,它为警报模型的post_save 和警报模型的post_save 事件定义了信号,我返回了带有新添加警报的StreamingHttpResponse。当我第一次获得 API 时,我会收到所有警报的响应,但在向数据库添加新警报时不会收到新添加的警报。我做错了什么?
监控/signals.py
@receiver(post_save,sender=Alert)
def send_alert(sender,instance,**kwargs):
qs_json = serializers.serialize('json',instance)
return StreamingHttpResponse(qs_json,content_type='text/event-stream')
监控/views.py
# just importing defined signal receiver here
from .signals import send_alert
# endpoint view function
def get_alerts(self):
queryset = Alert.objects.all().order_by('-date')
resolved = self.request.query_params.get('resolved')
server = self.request.query_params.get('server')
source = self.request.query_params.get('source')
if source is not None:
queryset = queryset.filter(source=source)
if resolved is not None:
queryset = queryset.filter(resolved=resolved)
if server is not None:
queryset = queryset.filter(server=server)
return HttpResponse(queryset)
即使我自己在 Django shell 上点击 DB 上的 .save 方法,也不会触发信号。
>>> from monitoring.models import Alert
>>> a=Alert(container="something")
>>> s.save()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。