2016-09-29 4 views
0

Raspberry 3では、14000のキーと値のペアからなる大きな文字列(json)を受け取るRabbit-Mq listener.pyを実行します。 listener.pyスクリプトはこの文字列を取得し、それをjson(python dictオブジェクト)にエンコードして解析し、その値をMariadbデータベースに格納する別のスクリプト(database.py)に渡します。Pythonはrabbitmqの引数として大きな文字列を受け取る

listener.py呼び出し: "身体" はRabbitMQのから受け取った文字列である

os.system("python %s %s" % (database.py, body)) 

私は、14000個のオブジェクトjsonがdatabase.pyにsys argumentとして渡すことになるかもしれないという心配があります。私の目標を達成できる他の方法はありますか?私はちょうどピクルスについて聞いた、それは私の目的のために良いですか?

+0

なぜdatabase.pyのデータを直接受け入れないのですか? – MKesper

+0

@MKesperよくlistener.pyは "While True:"ループで動作し、多くのスクリプト(データベースの更新、グラフ、ダウンロードなど)に異なるコマンドを送信します。私はコードをきれいに保つために、このようなモジュラーなアプローチが必要です。 –

+1

@BogdanMirceaStanciuしかし、それは 'os.system'呼び出しを経由する必要はありません。データベースと呼び出しメソッドを直接インポートしますか? – Holloway

答えて

1

簡単な方法は、マルチ処理。接続をListener and Clientとすることです。これらの方法は、ピックルを内部的に使用する。

+0

これは有望そうです。そして私が別のpythonスクリプトのトラフ「os.system」を呼び出す理由の1つは、複数のPythonプロセスを同時に実行させることです。 –

+0

プロセスプール(https://docs.python.org/3/library/multiprocessing.html?highlight=multiprocessing#module-multiprocessing.pool)が必要なような音がします。 – MKesper

関連する問題