awsiotsdk python中可能有bug?

0

【以下的问题经过翻译处理】 我有一个函数:

def get_thing_shadow_request(thingName, shadowName):

try:

ipc_client_shadow = awsiot.greengrasscoreipc.connect() get_thing_shadow_request = GetThingShadowRequest() get_thing_shadow_request.thing_name = thingName get_thing_shadow_request.shadow_name = shadowName op = ipc_client_shadow.new_get_thing_shadow() op.activate(get_thing_shadow_request) fut = op.get_response() result = fut.result(10) return result.payload

except BaseException as err: g_logger.error("EXCEPTION get_thing_shadow_request thingname {}, shadowname {} error {} ".format(thingName, shadowName, err)) return ""

我调用这个函数多次,它正常工作。但是,在第1023次调用的时候(已经非常接近1024)这个函数停止工作,并出现以下错误:

EXCEPTION get_thing_shadow_request count:1025, thingname smartdvr-1423019132001, shadowname streamcontrol error 46 (AWS_ERROR_SYS_CALL_FAILURE): System call failure

还需要注意的一点是,在每三分之一次调用中,我调用了一个不存在的设备影子(我主要用来检查这个设备影子是否存在,如果函数调用失败我就知道这个设备影子不存在)。

我看不到greengrass.log中有任何异常。

profile picture
专家
已提问 5 个月前15 查看次数
1 回答
0

【以下的回答经过翻译处理】 你好,

看起来你在方法内部调用了connect函数,这意味着你调用了1023次connect函数,从而创建了1023个线程和socket连接。

你应该只连接一次,然后在以后的所有调用中重复使用已经创建的这个client。这应该解决你的问题,同时更有效率和更快速。

祝好,

Michael

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则