gpt4 book ai didi

python - 使用 Motor 检查服务器(Mongodb 和 Tornado)

转载 作者:行者123 更新时间:2023-12-01 03:55:47 24 4
gpt4 key购买 nike

我需要创建一个函数来检查以确保 Mongo 服务器正在使用 ping 函数运行。我在那里设置了客户端(配置文件有带有端口号的字典)

   clientList = []
for value in configuration["mongodbServer"]:
client = motor.motor_tornado.MotorClient('mongodb://localhost:{}'.format(value))
clientList.append(client)

然后我运行这个函数:

class MongoChecker(Checker):

formatter = 'stashboard.formatters.MongoFormatter'
def check(self):
for x in clientList:
if x.ping:
return x.ping

我得到的错误:

 yielded unknown object MotorDatabase(Database(MongoClient([]), 'ping'))\n",

我认为我的问题是我错误地使用了 ping 功能。我找不到任何其他相关文档或任何其他类型的功能来检查服务器是否仍在运行。如果有人知道使用 Motor 监控状态的更好方法,我很乐意。谢谢!

最佳答案

首先,没有“ping”功能。因此 MotorClient 认为您正在尝试访问名为“ping”的数据库。名为“ping”的数据库显示在“未知对象”异常中。对于所有 MongoDB 命令,如“ping”,只需使用 MotorDatabase 的 command method .

第二,Motor是异步的。您必须在 Tornado 协程中使用 Motor 方法和“yield”语句。例如:

@gen.coroutine
def check():
try:
result = yield client.admin.command({'ping': 1})
print(result)
except ConnectionFailure as exc:
print(exc)

如果您想同步测试这一点,您可以运行 IOLoop 足够长的时间以使协程完成:

from pymongo.errors import ConnectionFailure
from tornado import gen
from tornado.ioloop import IOLoop

import motor.motor_tornado

client = motor.motor_tornado.MotorClient()
IOLoop.current().run_sync(check)

有关 Tornado 协程的介绍,请参阅 Refactoring Tornado CoroutinesTornado documentation .

关于python - 使用 Motor 检查服务器(Mongodb 和 Tornado),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37487025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com