AWS Lambda中的Python出现意外的未登录错误
当我尝试在Lambda中测试python函数时,我得到以下错误:AWS Lambda中的Python出现意外的未登录错误,python,amazon-web-services,aws-lambda,Python,Amazon Web Services,Aws Lambda,当我尝试在Lambda中测试python函数时,我得到以下错误: “errorMessage”:“模块‘lambda_函数’中的语法错误” 在CloudWatch日志中出现以下错误: 模块“lambda\u函数”中的语法错误:意外的未登录(lambda\u function.py,第28行) 以下是我的python代码: from __future__ import print_function import urllib2 from multiprocessing.dummy import
“errorMessage”:“模块‘lambda_函数’中的语法错误”
在CloudWatch日志中出现以下错误:
模块“lambda\u函数”中的语法错误:意外的未登录(lambda\u function.py,第28行)
以下是我的python代码:
from __future__ import print_function
import urllib2
from multiprocessing.dummy import Pool as ThreadPool
import hashlib
import datetime
import json
print('Loading function')
def my_urlopen(url):
try:
return urllib2.urlopen(url)
except Exception as e:
try:
return urllib2.urlopen(url)
except Exception as e2:
urllib2.urlopen("https://example.com/cron/error.php?url="+url+"&code="+str(e2.code));#+"&reason="+e2.reason);
return None
return None
def customer_list(cron_cipher, minute):
try:
return urllib2.urlopen("https://d-example.com:444/TESTcron.php?k="+cron_cipher+"&m="+minute+"&f=rules")
except Exception as e:
try:
return urllib2.urlopen("https://e-example.com:444/TESTcron.php?k="+cron_cipher+"&m="+minute+"&f=rules")
except Exception as e2:
urllib2.urlopen("https://example.com/cron/error.php?url="+url+"&code="+str(e2.code))
print("Lookup error: https://example.com/cron/error.php?url="+url+"&code="+str(e2.code));
return None
return None
def lambda_handler(event, context):
# code continues below....
我对python非常陌生,但是代码使用的是myurlopen
函数,如图所示,但是添加了customer\u list
函数似乎导致了一个问题,尽管我看不到语法问题
第28行是客户列表
功能中的行,例外情况除外,如e2:
行
它似乎缩进了正确的数量,我认为不需要分号(尽管我已经尝试了带和不带)。我遗漏了什么?您粘贴到问题中的代码混合了空格和制表符,用于缩进。 在Python中,这是一个禁忌。必须使用所有空格或所有制表符进行缩进。 PEP8风格指南说 确保使用具有“空白模式”的文本编辑器,该模式允许您查看空格和制表符之间的差异。 例如,emacs的
M-x空白模式
指示以黄色突出显示的选项卡,并将空格作为中心点
如果您使用的是unix,另一种检测制表符与空格的方法是运行
cat-A
:
此处,选项卡由^I
描述
将制表符替换为4个空格以修复语法错误。粘贴到问题中的代码混合使用空格和制表符进行缩进。 在Python中,这是一个禁忌。必须使用所有空格或所有制表符进行缩进。 PEP8风格指南说 确保使用具有“空白模式”的文本编辑器,该模式允许您查看空格和制表符之间的差异。 例如,emacs的
M-x空白模式
指示以黄色突出显示的选项卡,并将空格作为中心点
如果您使用的是unix,另一种检测制表符与空格的方法是运行
cat-A
:
此处,选项卡由^I
描述
将选项卡替换为4个空格以修复语法错误。尝试先在本地运行尝试先在本地运行
% cat -A lambda_function.py
def customer_list(cron_cipher, minute):$
^Itry:$
^I^Ireturn urllib2.urlopen("https://d-example.com:444/TESTcron.php?k="+cron_cipher+"&m="+minute+"&f=rules")$
^Iexcept Exception as e:$
^I^Itry:$
^I^I^Ireturn urllib2.urlopen("https://e-example.com:444/TESTcron.php?k="+cron_cipher+"&m="+minute+"&f=rules")$
except Exception as e2:$
urllib2.urlopen("https://example.com/cron/error.php?url="+url+"&code="+str(e2.code))$
^I^I print("Lookup error: https://example.com/cron/error.php?url="+url+"&code="+str(e2.code));$
return None$
return None$
$
def lambda_handler(event, context):$
^I # code continues below....$