2013-01-08 232 views
0

原來的問題數據庫訪問

我想從扭曲的異步應用程序內運行的查詢數據庫。在添加新記錄的示例中,更新某些內容或僅獲取一些數據。

我的建議

我想想,只有扭曲的應用程序可以訪問的Django,這將做數據庫的所有排序操作,我需要作出特別的看法。

在示例url domain.com/server/getuserdata/{{ user_id }}/將以某種方便的格式(json)返回關於用戶的數據。

GET/POST請求將在Twisted中發生,因此它不會阻止我的Twisted應用程序(糾正我,如果我錯了)。

我的扭曲應用程序只會在一段時間內運行這些請求。這不是實時更新數據。實時數據將存儲在Redis中,一旦我準備好存儲它,Django數據庫就會使用存儲在redis中的數據向Django運行請求。

但是仍然可以有很多來自服務器每秒的請求(可以說從100到1000)。

另一種方法我讀到

  • 扭曲nadbapi,但自2007年以來不是更新,所以我不想在Redis的誠實使用
  • 存儲requestes和其他後臺程序/應用程序運行它們或cron的。

問題

  • 是使用GET/POST請求遞延對象Django的一個好方法?
  • 我可以通過某種方式告訴Django Twisted應用程序是否受信任,因此它不會像DDOS一樣對待它?
  • 這麼快就會有這麼多的請求(當然使用緩存)?
  • 這個任務有沒有更好的方法?

我是新來的扭曲與積分異步應用與同步應用程序,所以我很抱歉,如果我打了一些愚蠢的

+0

嗯,我想我失去了一些東西。你爲什麼不直接從Twisted應用程序進行查詢? twisted.enterprise.adbapi爲大多數流行的數據庫後端提供異步API ... –

+0

adbapi在我看來是不可靠的。另一件事是我必須定義我的db模型兩次(對於django和abdapi)。在我看來,使用RESTful API也更安全。 Tastypie是用於創建RESTful API的django的一款出色應用程序。使用多個數據庫會出現其他問題。 –

回答

2

使用遞延對象是對GET/POST請求Django的一個好的 的方法?

我希望我有經驗來回答這個問題。我相信,只要請求是異步的,你就可以在扭曲的一面很好地工作。我基於龍捲風的基本經驗。對於一個應用程序來說,請求一個web服務是相對常見的,龍捲風提供了一種內置在框架中的異步方式。

我可以以某種方式告訴Django是扭曲的應用程序是可信的,所以它不會 把它當作DDOS?

我不認爲django本質上知道什麼服務正在請求它。它不會限制速度或開箱即用。它只是響應任何請求。如果這些更多的請求,它可以處理它會崩潰。許多請求django可以處理的是你的項目的變體以及你如何部署它。您可以輕鬆地使用gunicorn運行它,並在其前面有nginx。如果它沒有正確執行,您可以啓動另一個gunicorn實例。

請問這是否足夠快,請求太多(使用緩存 當然)?

我不認爲有人可以說。 YOu可能必須自己進行基準測試。有很多博客帖子/文章都會對各種django服務器配置進行基準測試。

這個任務有沒有更好的方法?

我認爲這是一種比較常見的方法。通過django通過RESTful界面公開您的方法。使異步重新扭曲。

+0

感謝您的完整答案。現在我確信使用這種方法,在閱讀了關於這個問題的許多線索之後,我沒有發現這種方法。我不知道Django對DDOS沒有保護,現在我認爲它是文件服務器的責任。 –