元の問題
Twisted非同期アプリ内からデータベースに対してクエリを実行したい。たとえば、新しいレコードを追加したり、何かを更新したり、データを取得したりします。
わたしの提案
Twistedアプリだけがアクセスできるdjangoで特別なビューを作成することを考えています。これにより、必要なデータベースに対してあらゆる種類の操作が実行されます。
たとえば、urldomain.com/server/getuserdata/{{ user_id }}/
はユーザーに関するデータを便利な形式(json)で返します。
GET / POSTリクエストはTwistedで延期されるため、Twistedアプリがブロックされることはありません(間違っている場合は修正してください)。
私のTwistedアプリは、これらのリクエストをたまにしか実行しませんでした。データをリアルタイムで更新するわけではありません。リアルタイムデータはRedisに保存され、Djangoデータベースに保存する準備ができたら、redisに保存されているデータを使用してDjangoへのリクエストを実行します。
ただし、それでも1秒あたりのサーバーからの要求が多くなる可能性があります(たとえば、100から1000まで)。
私が読んだ別のアプローチ
- ツイストnadbapiですが、2007年以降更新されていないので、正直に使いたくありません
- リクエストをRedisに保存し、別のデーモン/アプリまたはcronで実行します。
質問
- DjangoへのGET/POSTリクエストに遅延オブジェクトを使用するのは良いアプローチですか?
- どういうわけか、Twistedアプリが信頼されているので、DDOSのように扱われないことをDjangoに伝えることはできますか?
- これは非常に多くのリクエストで十分に高速ですか(もちろんキャッシュを使用)?
- このタスクのより良いアプローチはありますか?
ツイストと同期アプリとの統合非同期アプリは初めてなので、愚かなことを入力した場合は申し訳ありません