2016-09-29 12 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