2011-08-11 52 views
2

我完全困惑,不知道該怎麼做,所以如果我的描述/信息不好,請原諒我。Django 1.3,如何在ebay上發佈帖子時發出信號?

所以我想說通過django通知做一個通知,或者簡單地發送一封電子郵件給我的一個用戶,當他的一個職位在ebay結束。在我的數據庫中,我有一個存儲郵件結束時間的模型,但是我不確定如何有效檢查或存儲信號或某些會在當前時間到時提醒系統提醒用戶的信號>比結束日期時間。

謝謝!

由於我想發送電子郵件/通知第二篇文章結束,我不認爲我可以使用調度程序來檢查是否有任何帖子已經結束,我相信這會效率太低,因爲我將不得不像檢查每一秒,但就像我上面說的,我不知道什麼...

回答

1

你可以使用django-celery - 連接post_save handler,檢查是否createdTrue,如果這樣安排一個Task那會在正確的時間通知用戶(使用eta keyword arg)。

+0

yea認爲這樣的事情會很好,但我擔心這樣做的django-celery會使用多少內存......這樣做的最好的低內存方式是什麼? – Derek

0

這聽起來像你至少想過通過一些解決方案。但要記住的一點是,作爲Web框架的Django是一個無狀態的「機器」。簡而言之,這意味着它不會在一秒內「跑」到一個帖子到期(或者說,您不能假設一個帖子在截止時間後會從瀏覽器發送一個請求)。這意味着使用Django發送/發送通知是不合適的。

但是,由於您確切知道何時應該發送電子郵件,應該可以在創建帖子後立即在Django中對通知進行排隊。一些外部的「程序」然後將不得不處理隊列以實際發送通知......有各種創造性的方式來做到這一點,但你可以使用python來做到這一點。

如果你要考慮使用消息隊列,看看RabbitMQ的 http://nathanborror.com/posts/2009/may/20/working-django-and-rabbitmq/

0

正如其他人所說,最好的解決辦法是Django的芹菜(https://github.com/ask/django-芹菜),但如果你資源不足,它有點重量級。

在類似的需求,我有一箇中間件,檢查條件並執行所需的操作(在我的情況下,這只是在數據庫的某些記錄中更改布爾值)。這適用於我,因爲直到有人實際訪問數據時,無需更改它,並且因爲「任務」只是一個UPDATE查詢,所以它不是無法承受的負載。

否則,您可以每短時間(1分鐘?5分鐘?)設置一個cron作業,並檢查條件並做出結果。