【问题标题】:sending notifications when accessing api page访问api页面时发送通知
【发布时间】:2013-01-31 10:39:37
【问题描述】:

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

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

class CommentResource(ModelResource):

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

在 API 中使用 sending notifications 感觉很奇怪,所以我在问 如果这是一个很好的做法。

【问题讨论】:

    标签: django rest tastypie


    【解决方案1】:

    您是对的,尽管这可行,但它可能不是最理想的。可能更好的是使用信号将 API 和通知解耦(这里是 Django docs on signals

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-11
      • 2021-06-18
      • 1970-01-01
      • 2021-11-03
      • 2012-04-11
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      相关资源
      最近更新 更多