1

当用户向图像添加评论时,
包括图像作者在内的一些用户会通过推送通知得到通知。

我让它在常规视图中工作。
现在我采用了美味的框架,并转换了这个视图。

class CommentResource(ModelResource):

..
   def obj_create(....):
        #send notifications
        #actually create the comment object

在 API 中感觉很奇怪sending notifications,所以我问这是否是一种很好的做法。

4

1 回答 1

1

你是对的,尽管这可行,但它可能不是最理想的。可能更好的是使用信号将 API 和通知解耦(这里是有关信号的 Django 文档

主要好处是将通知代码与 API 代码分离。信号侦听器不关心评论的创建者、方式或位置,它只是根据评论已创建这一事实而采取行动。同样适用于 API(信号发送器)。这允许您在不更改 API 的情况下更改通知代码,反之亦然。当然,这样代码也更简单、更干净——例如,如果你决定对评论做更多的事情,你只需添加更多的侦听器,而不是用更多与 API 本身无关的特性来膨胀你的 API 代码并使其更难维护。

您可以更进一步,开发一个异步版本(Django 信号是同步的,这意味着当您发送信号时,处理会被阻塞,直到信号侦听器完成)。这也很好,因为在发送信号后,您的 API 请求处理代码可以完成而无需等待发送通知。从消费者的角度来看,这将使 API 响应更快。这可以通过多种方式完成 - 使用线程、Celery 或 Greenlet/Gevent,如果您有兴趣,google 是您的朋友。

异步是否真正适合取决于您的确切要求,即您可能实际上对同步发送信号感兴趣,因为通知可能对您非常重要,即使它们使 API 响应变慢。

希望这会让你继续前进:) 祝你好运!

于 2013-03-17T02:37:40.530 回答