简体   繁体   English

ast.literal_eval InternalServerError

[英]ast.literal_eval InternalServerError

I'm working with Python for AWS Lambda. 我正在使用适用于AWS Lambda的Python。 I have Profile PATCH and Profile DELETE api calls. 我有Profile Patch和Profile DELETE api调用。 PATCH request works fine. PATCH请求工作正常。 DELETE returns InternalServerError on DELETE在以下时间返回InternalServerError

profile_request = ast.literal_eval(str(event['_body']))

PATCH uses the exact same thing. PATCH使用完全相同的东西。 I even tried copy-pasting the line from PATCH to make sure there wasn't a typo. 我什至尝试从PATCH复制粘贴该行,以确保没有错字。 I've seen people say a syntax issue can cause this. 我见过有人说语法问题会导致这种情况。 I copy-pasted the body from PATCH and replaced profile with archive_status to make sure there wasn't a syntax issue. 我从PATCH复制粘贴了正文,并用archive_status替换了profile,以确保没有语法问题。 event is a dictionary. 事件是一本字典。 event['_body'] is unicode type. event ['_ body']是Unicode类型。 Both requests have the exact same Authorization and Headers requirements. 这两个请求具有完全相同的授权和标头要求。 I checked CloudWatch logs to make sure the body is actually listed as _body in the event. 我检查了CloudWatch日志,以确保主体在事件中实际上被列为_body。 I can't figure out why I am getting the InternalServerError for DELETE profile and not PATCH profile. 我不知道为什么我得到了DELETE配置文件而不是PATCH配置文件的InternalServerError。 Any suggestions would be appreciated. 任何建议,将不胜感激。

PATCH body: PATCH正文:

{

    "AccessToken": "eyJraWQiOiIzRUZtNG1lRE45c1wvQU9XUGdiYkZJNm1wakVkOVRFR05PYTY0SXJZOWRDdz0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIwZTQ1ZDYyZi1mYzQxLTQxNTQtYjZiOC04NjBiNTdkZWNkOGUiLCJkZXZpY2Vfa2V5IjoidXMtZWFzdC0xXzhkYTA3NWQ2LWEzNmItNDZhNS04YjAyLWY3ZmNjY2UxMGZiOCIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiYXdzLmNvZ25pdG8uc2lnbmluLnVzZXIuYWRtaW4iLCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAudXMtZWFzdC0xLmFtYXpvbmF3cy5jb21cL3VzLWVhc3QtMV96dnNGSkYzRzEiLCJleHAiOjE1MDYzNzI2MjksImlhdCI6MTUwNjM2OTAyOSwianRpIjoiMDU3NTkwMzItYmQ5YS00MzljLWJjM2QtYWY2OGZiZjJmNTBiIiwiY2xpZW50X2lkIjoiNWNscm9vNDhtamZpb2QzaDRoZGgyZDNvZHUiLCJ1c2VybmFtZSI6IjBlNDVkNjJmLWZjNDEtNDE1NC1iNmI4LTg2MGI1N2RlY2Q4ZSJ9.G2-gGYyZajrsAikFPuuttYQAj1Yc7uj-UUz469NEUk0SoEFvcJ3E6MOINmIWYg1W6BwJG09W4C_DvBrbybNZep-TtVoAHqNeuiEubt4IABeycZ9ELhKS4G-aaIvbV6CTVFVljFcUdTqCBf0TP7kxKp6P2kRRx08PjCqfQX-34XE-YJt2FyIGzSc958OT0MasROdHxr_ozJS6LGHw52BF1UG1llpR3YPGtMe8Gz9Y65RFEIDIpXllShKSFogvy-rdJFnaJqAYYn6WfjtmqDUjYzFTNZmGNOWy7_BxGFX90lUBB0V47k8M4nxvC_qWQ9o1LTkCYXIDD9sWMCtY4ewYmw",
    "profile": {
        "name": "Test"
    }
}

DELETE body: 删除正文:

{

    "AccessToken": "eyJraWQiOiIzRUZtNG1lRE45c1wvQU9XUGdiYkZJNm1wakVkOVRFR05PYTY0SXJZOWRDdz0iLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIwZTQ1ZDYyZi1mYzQxLTQxNTQtYjZiOC04NjBiNTdkZWNkOGUiLCJkZXZpY2Vfa2V5IjoidXMtZWFzdC0xXzhkYTA3NWQ2LWEzNmItNDZhNS04YjAyLWY3ZmNjY2UxMGZiOCIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiYXdzLmNvZ25pdG8uc2lnbmluLnVzZXIuYWRtaW4iLCJpc3MiOiJodHRwczpcL1wvY29nbml0by1pZHAudXMtZWFzdC0xLmFtYXpvbmF3cy5jb21cL3VzLWVhc3QtMV96dnNGSkYzRzEiLCJleHAiOjE1MDYzNzI2MjksImlhdCI6MTUwNjM2OTAyOSwianRpIjoiMDU3NTkwMzItYmQ5YS00MzljLWJjM2QtYWY2OGZiZjJmNTBiIiwiY2xpZW50X2lkIjoiNWNscm9vNDhtamZpb2QzaDRoZGgyZDNvZHUiLCJ1c2VybmFtZSI6IjBlNDVkNjJmLWZjNDEtNDE1NC1iNmI4LTg2MGI1N2RlY2Q4ZSJ9.G2-gGYyZajrsAikFPuuttYQAj1Yc7uj-UUz469NEUk0SoEFvcJ3E6MOINmIWYg1W6BwJG09W4C_DvBrbybNZep-TtVoAHqNeuiEubt4IABeycZ9ELhKS4G-aaIvbV6CTVFVljFcUdTqCBf0TP7kxKp6P2kRRx08PjCqfQX-34XE-YJt2FyIGzSc958OT0MasROdHxr_ozJS6LGHw52BF1UG1llpR3YPGtMe8Gz9Y65RFEIDIpXllShKSFogvy-rdJFnaJqAYYn6WfjtmqDUjYzFTNZmGNOWy7_BxGFX90lUBB0V47k8M4nxvC_qWQ9o1LTkCYXIDD9sWMCtY4ewYmw",
    "archive_status": "archive"
}

Sorry. 抱歉。 I'm fairly new to python and brand new to json and AWS. 我是python的新手,并且是json和AWS的新手。 Another company setup chalice for deployment and a skeleton of our api with some basic code. 另一家公司使用一些基本代码设置了用于部署的圣杯和我们api的框架。 I'm supposed to figure it all out and learn how to make it work as my company wants it to. 我应该弄清楚这一切,并学习如何使其按我的公司的意愿工作。 I was testing through postman. 我正在通过邮递员进行测试。 The lambda code logger that goes to cloudwatch was how I was tracking down the issue. 转到cloudwatch的lambda代码记录器就是我一直在追踪该问题的方式。 It turns out the issue was the log line immediately after ast.literal_eval: 原来问题出在ast.literal_eval之后的日志行:

profile_request = ast.literal_eval(str(event['_body'])) profile_request = ast.literal_eval(str(event ['_ body']))

logger.info(profile_request) logger.info(profile_request)

I assumed not seeing that log in cloudwatch meant the ast.literal_eval was the issue. 我以为没有看到cloudwatch中的日志意味着ast.literal_eval是问题所在。 Finding a way to test locally so I could see the trace allowed me to figure out the log line was causing AttributeError: 'dict' object has no attribute 'strip'. 找到一种在本地进行测试的方法,以便可以看到跟踪,从而弄清了日志行是否导致AttributeError:'dict'对象没有属性'strip'。 That's an easy one so the problem is resolved. 这很简单,因此问题得以解决。 Glad I know how to test locally now also. 很高兴我现在也知道如何进行本地测试。 Thank you for replying so quickly. 感谢您如此迅速的回复。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM