当用户向图像添加评论时,
包括图像作者在内的一些用户通过推送通知得到通知。
我让它在常规视图中工作 现在我正在采用tastypie框架,并转换这个视图。
class CommentResource(ModelResource):
..
def obj_create(....):
#send notifications
#actually create the comment object
在API中使用sending notifications
感觉很奇怪,所以我问
如果这是一个很好的做法。
答案 0 :(得分:1)
你说得对,但这可能不是最理想的。可能更好的方法是使用信号(这里是Django docs on signals)
来分离API和通知主要好处是将通知代码与API代码分离。信号监听器不关心创建评论的人或方式或位置,它只关注评论的创建事实。同样适用于API(信号发送器)。这允许您在不更改API的情况下更改通知代码,反之亦然。当然,这样代码也更简单,更清晰 - 例如,如果您决定使用注释做更多的事情,那么您只需添加更多侦听器,而不是使用与API本身无关的更多功能来增加您的API代码。并使其更难维护。
您可以更进一步,开发一个异步版本(Django信号是同步的,这意味着当您发送信号时,处理将被阻止,直到信号监听器完成为止)。这也非常好,因为在发送信号后,您的API请求处理代码可以完成而无需等待通知发送。从消费者的角度来看,这将使API响应更快。这可以通过多种方式完成 - 使用线程,Celery或Greenlet / Gevent,如果您有兴趣,Google就是您的朋友。
异步是否真的合适取决于您的确切要求,即您可能实际上有兴趣同步发送信号,因为通知可能对您非常重要,即使它们使API响应变慢。
希望这能让你顺利:)祝你好运!