0

現状:

私は2つのPythonアプリを持っています(フロントエンドサーバーとデータコレクター、データベースはそれらの間にあります)。

現在、redis を db として使用し、そのパブリッシュ/サブスクライブ プロトコルを使用して、新しいデータが利用可能になったときにフロントエンドに通知します。

しかし、別のデータベースを使用したいかもしれません (そして、pub/sub のためだけにシステム上に redis を保持したくありません)。

データコレクターがデータベースに対して新しいデータを処理した場合に (beanstalkd や redis などの外部メッセージキューを使用せずに) フロントエンドに通知するための簡単な代替手段はありますか?

4

2 に答える 2

5

ZeroMQ は良いオプションです。これには優れた Python バインディングがあり、同じマシン上のプロセスと異なるマシン上のプロセス間の通信がほとんど同じに見えます。

ガイドを読むことから始めます: http://zguide.zeromq.org/page:all

于 2013-03-08T08:36:18.817 に答える
1

私のコメントで述べたように、ネットワークを介して何かが必要な場合は、Web サービス (flask アプリ?) をセットアップするか、独自の INET ソケット サーバーを作成する以外に、オペレーティング システムに組み込まれているものとの間で通信するものはありません。マシン。Beanstalk には Python の非常に単純な API があり、私はこれをこの種の目的で使用して非常に成功しています。

try:
    beanstalk = beanstalkc.Connection(host="my.host.com")
    beanstalk.watch("update_queue")
except:
    print "Error connecting to beanstalk"

while True:
    job = beanstalk.reserve()
    do_something_with_job(job)

同じマシンでのみ作業する場合は、Linux IPC を読んでください。プロセス間のソケット接続は非常に高速で、実質的にオーバーヘッドはゼロです。epoll コールバックを利用する場合は、非同期プログラムの一部にすることもできます。

于 2013-03-08T10:17:42.923 に答える