2

私は独学の Python プログラマーであり、Socket プログラミングとネットワーク全般の理解を深めるために使用したいプロジェクトのアイデアがあります。私が正しい道を進んでいるかどうか、誰かが私に教えてくれること、または別の方向に私を向けることができることを望んでいました.

一般的な考え方は、Web サイトの UI を介してデータベースを更新できるようにすることです。その後、Python サーバーはそのデータベースの変更を一貫してチェックします。変更に気付くと、最初に接続された利用可能なクライアントに一連の指示を渡します。

目的は、
A - データベースから読み取るサーバーを作成することです。
B - リモート マシンから上記のサーバーに接続するクライアントを作成します。
C - サーバーは一貫してデータベースを読み取り、変更を探します。たとえば、実行/実行しないことを示すブール値の列です。
D - run Boolean が true の場合、サーバーは最初に使用可能なクライアントに指示を渡します。
E - クライアント自体が、特定のランタイム発生のデータベースの更新を処理します。

質問/懸念事項
A - 私の最初の懸念は、データベースを常に読み取り、変更を検索するために必要なリソースです。これを行うより良い方法はありますか?または、これを行うためのループを作成して、あまり気にしないでください。
B - Twisted のドキュメント/チュートリアルを読んでいますが、現時点では、これは複数のクライアント (議論のため 20 ~ 30) の接続を処理できる実行可能なオプションのように見えます。私が読んだことから、スレッド化は価値があるというよりも面倒なようです。

私は正しい軌道に乗っていますか?助言がありますか?または、一見の価値のある読み物ですか?
前もって感謝します

4

1 に答える 1

1

Django Web フレームワークは、ORMレベルで特定のデータベース オブジェクトへの変更を検出し、それらの変更にハンドラーをアタッチできるSignalsと呼ばれるものを実装します。これはオープン ソース プロジェクトであるため、ソース コードをチェックして、複数のデータベース バックエンド (Mysql、postgres、oracle、sqlite) をサポートしながら Django がどのように機能するかを理解することをお勧めします。

データベースの変更を直接リッスンしたい場合、ほとんどのデータベースには、すべてのトランザクションの変更を記録する何らかのシステムがあります。たとえば、MySql には、データベースへの変更を検出するために読み続けることができるバイナリ ログがあります。

また、Twisted は素晴らしいですが、Gevent/Greenlet + thisを使用することをお勧めします。Django と統合したい場合、django と gevent の基本を組み合わせる方法は? 役立つだろう

于 2012-10-05T18:20:37.410 に答える