我正在尝试使用以下代码在 Python 中启动一个 Mongod 实例(省略了一些细节):
subprocess.call("mongod --fork --dbpath /asdf --port 12345", shell=True)
我的印象是 subprocess 在返回之前等待进程启动,尽管情况似乎并非如此。例如,如果我之后调用以下内容:
conn = pymongo.MongoClient("localhost", 12345)
我会收到一个连接错误,指出它无法连接:
pymongo.errors.ConnectionFailure: could not connect to localhost:12345: [Errno 111] Connection refused
但是,如果我从终端内启动 python,我可以毫无问题地连接。此外,如果我在子进程调用后立即发出睡眠命令,我可以连接,尽管这会导致各种潜在的竞争条件。
等待 mongod 实例启动的最佳方法是什么?我可以使用一个while循环来尝试连接,但这似乎非常草率。如果有人有任何建议,我很想听听他们的意见。