2013-01-31 49 views
1

當用戶向圖像添加評論時,某些用戶(包括圖像的作者)會通過推送通知得到通知。訪問api時發送通知頁面

我讓它定期工作。
現在我正在採用tastypie框架,並轉換此視圖。

class CommentResource(ModelResource): 

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

它只是感覺怪怪的具有API sending notifications,所以我問 ,如果這是一個很好的做法。

回答

1

你是對的,儘管這可能是不理想的。可能更好的做法是使用信號來分離API和通知(這裏是Django docs on signals

主要好處是將通知代碼與API代碼分離。信號偵聽器並不關心創建評論的人或創建方式,而僅僅是評論創建的事實。同樣適用於API(信號發送者)。這使您可以在不更改API的情況下更改通知代碼,反之亦然。當然,這種方式代碼更簡單也更清晰 - 例如,如果您決定在註釋中做更多的事情,您只需添加更多的偵聽器,而不是使用更多與API本身無關的功能來擴展API代碼並使其難以維護。

您可以進一步採取這一步並開發一個異步版本(Django信號是同步的,這意味着當您發送信號時,處理將被阻止,直到信號偵聽器完成)。這也會非常好,因爲在發送信號之後,您的API請求處理代碼可以在不等待通知發送的情況下完成。這將使API從消費者的角度更快地響應。這可以通過多種方式完成 - 使用線程,Celery或Greenlet/Gevent,如果您有興趣,Google是您的朋友。

異步實際上是否合適取決於您的確切要求,即您可能實際上對同步發送信號感興趣,因爲即使通知對API的響應速度較慢,它可能對您非常重要。

希望這會讓你去:)祝你好運!

相關問題