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
EXPERTE
gefragt vor 6 Monaten18 Aufrufe
1 Antwort
0

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

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

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

祝好,

Michael

profile picture
EXPERTE
beantwortet vor 6 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen