2016-09-29 65 views
0

在Raspberry 3上運行一個Rabbit-Mq listener.py,它接收由14000個鍵/值對組成的大字符串(json)。 listener.py腳本會抓住這個字符串並將它傳遞給另一個腳本(database.py),該腳本會將它編碼回json(python dict對象),解析它並將值存儲到Mariadb數據庫中。Python從rabbitmq接收大字符串作爲參數

的listener.py電話:

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

其中 「身體」 是從的RabbitMQ收到的字符串。

我有一個擔心,14000對象json可能會大到傳遞給database.py作爲sys argument。還有其他方法可以實現我的目標嗎?我剛剛聽說過泡菜,對我的目的更好嗎?

+0

爲什麼你不直接接受database.py中的數據? – MKesper

+0

@MKesper well listener.py在「While True:」循環中運行,並負責向多個腳本(數據庫更新,圖表,下載等)發送不同的命令。我需要這種模塊化方法來保持我的代碼清潔 –

+1

@BogdanMirceaStanciu,但不需要通過'os.system'調用。直接導入數據庫和調用方法? – Holloway

回答

1

一個簡單的方法是使用多處理。與Listener and Client連接。這些方法在內部使用pickle。

+0

這看起來很有希望。我稱另一個python腳本爲「os.system」的原因之一是讓多個python進程同時運行。 –

+0

聽起來就像你想要一個進程池(https://docs.python.org/3/library/multiprocessing.html?highlight=multiprocessing#module-multiprocessing.pool)。 – MKesper