从异常对象中读取 属性
Reading property from object in exception
我正在尝试从错误对象中读取 属性,同时我捕获了异常。错误来自芹菜工人。
下面我展示了来自 Celery 的错误控制台:
[2019-12-15 16:38:41,442: ERROR/MainProcess] Task api.tasks.sendSms[139dbbbd-df85-4528-a131-973848fb4f80] raised unexpected: AttributeError("'ERR_UNKNOWN' object has no attribute 'Text'")
Traceback (most recent call last):
File "/share/backend/backendsmsgateapi/api/tasks.py", line 16, in sendSms
status = smsServiceObject.sendParcicularSms(receiver, template)
File "/share/backend/backendsmsgateapi/api/smsService.py", line 38, in sendParcicularSms
state_machine.SendSMS(message)
gammu.ERR_UNKNOWN: {'Text': 'Nieznany błąd.', 'Where': 'SendSMS', 'Code': 27}
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/share/backend/myenv/lib/python3.7/site-packages/celery/app/trace.py", line 385, in trace_task
R = retval = fun(*args, **kwargs)
File "/share/backend/myenv/lib/python3.7/site-packages/celery/app/trace.py", line 648, in __protected_call__
return self.run(*args, **kwargs)
File "/share/backend/backendsmsgateapi/api/tasks.py", line 20, in sendSms
message = getattr(error_object, "Text")
AttributeError: 'ERR_UNKNOWN' object has no attribute 'Text'
我的代码部分是:
@shared_task
def sendSms(template, receiver, duration):
try:
smsServiceObject = smsService()
status = smsServiceObject.sendParcicularSms(receiver, template)
time.sleep(duration)
except:
error_object = sys.exc_info()[1]
message = getattr(error_object, "Text")
data = {
"success" : False,
"error_info": message,
"receiver": receiver
}
return data
data = {
"success": True,
"receiver": receiver
}
return data
如您所见,问题在于:
message = getattr(error_obj, "Text")
但是为什么呢?在控制台中对象 ERROR_UKNOWN 有 属性 'Text' 并且值为 'Neznany błąd'。
为什么它不起作用?我将不胜感激。
尝试以下操作:
error_object = sys.exc_info()[1]
message = error_object.args[0]['Text']
data = {
"success" : False,
"error_info": message,
"receiver": receiver
}
return data
我正在尝试从错误对象中读取 属性,同时我捕获了异常。错误来自芹菜工人。
下面我展示了来自 Celery 的错误控制台:
[2019-12-15 16:38:41,442: ERROR/MainProcess] Task api.tasks.sendSms[139dbbbd-df85-4528-a131-973848fb4f80] raised unexpected: AttributeError("'ERR_UNKNOWN' object has no attribute 'Text'")
Traceback (most recent call last):
File "/share/backend/backendsmsgateapi/api/tasks.py", line 16, in sendSms
status = smsServiceObject.sendParcicularSms(receiver, template)
File "/share/backend/backendsmsgateapi/api/smsService.py", line 38, in sendParcicularSms
state_machine.SendSMS(message)
gammu.ERR_UNKNOWN: {'Text': 'Nieznany błąd.', 'Where': 'SendSMS', 'Code': 27}
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/share/backend/myenv/lib/python3.7/site-packages/celery/app/trace.py", line 385, in trace_task
R = retval = fun(*args, **kwargs)
File "/share/backend/myenv/lib/python3.7/site-packages/celery/app/trace.py", line 648, in __protected_call__
return self.run(*args, **kwargs)
File "/share/backend/backendsmsgateapi/api/tasks.py", line 20, in sendSms
message = getattr(error_object, "Text")
AttributeError: 'ERR_UNKNOWN' object has no attribute 'Text'
我的代码部分是:
@shared_task
def sendSms(template, receiver, duration):
try:
smsServiceObject = smsService()
status = smsServiceObject.sendParcicularSms(receiver, template)
time.sleep(duration)
except:
error_object = sys.exc_info()[1]
message = getattr(error_object, "Text")
data = {
"success" : False,
"error_info": message,
"receiver": receiver
}
return data
data = {
"success": True,
"receiver": receiver
}
return data
如您所见,问题在于:
message = getattr(error_obj, "Text")
但是为什么呢?在控制台中对象 ERROR_UKNOWN 有 属性 'Text' 并且值为 'Neznany błąd'。 为什么它不起作用?我将不胜感激。
尝试以下操作:
error_object = sys.exc_info()[1]
message = error_object.args[0]['Text']
data = {
"success" : False,
"error_info": message,
"receiver": receiver
}
return data