1

別のサーバーからのjsonメッセージを常にリッスンしているpythonスクリプトがあります。メッセージを受信すると、値の 1 つが変数に入れられます。このメッセージを受信したら、別の Python スクリプトを起動して、変数を処理する必要があります。誰でもこれを行う方法を手伝ってもらえますか?

私はPythonに非常に慣れていないため、同様の質問に対する他の回答のいくつかを理解するのに苦労しているため、あなたが私に与えることができる助けを本当に感謝しています.

ありがとうございました!

以下は、メッセージを受信するために常に実行されているコードです。

class MyListener(stomp.ConnectionListener):
    def on_error(self, headers, message):
        print 'received an error %s' % message

    def on_message(self, headers, message):
        print 'received a message %s' % message
        obj = json.loads(message)
        detectedimsi = obj["imsi"]
        print detectedimsi
4

2 に答える 2

1

subprocess次のモジュールが必要です。

import subprocess

次に、on_message()メソッドで、他のプロセスを開始できます。

  def on_message(self, headers, message):
    …
    outputOfOtherProcess = subprocess.check_output([
      '/path/to/other/process',
      json.dumps(detectedimsi) ])

他のプロセスは、渡したい値をsys.argv[1]JSON 形式で受け取ります (したがって、 を使用する必要がありますjson.loads(sys.argv[1]))。

値を渡す他の方法も可能ですが、コマンド ライン引数として渡すことで十分な場合があります (データのサイズなどによって異なります)。

abarnert が指摘したように、いくつか言及する必要があります。

  • サブプロセスを呼び出すこの方法は、サブプロセスが終了するまでブロックされます。これは、サブプロセスが終了する前にスクリプトが再び反応することになっている場合に問題になる可能性があります。
  • 実行可能ファイルとしてパスを指定してサブプロセス スクリプトを呼び出すと、スクリプトを直接呼び出すことができないシステムでは失敗する可能性があります。このような場合、インタープリター ( としてアクセス可能sys.executable) を呼び出し、代わりにスクリプトへのパスを最初のパラメーター (およびその後の残りのパラメーター) として渡す必要があります。
于 2013-05-28T09:33:06.630 に答える