当我尝试在Lambda中测试我的python函数时,我收到以下错误:
"errorMessage": "Syntax error in module 'lambda_function'"
CloudWatch日志中出现此错误:
Syntax error in module 'lambda_function': unexpected unindent (lambda_function.py, line 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非常陌生,但代码正在使用此处显示的my_urlopen
函数,但添加customer_list
函数似乎会导致问题,尽管我看不到语法问题。
第28行是except Exception as e2:
函数中的customer_list
行。
它似乎缩进了正确的数量,我认为不需要分号(尽管我已经尝试过和不使用分号)。我错过了什么?
答案 0 :(得分:2)
您粘贴到问题中的代码混合了用于缩进的空格和制表符。 在Python中,这是一个禁忌。您必须使用所有空格或所有选项卡进行缩进。 PEP8风格指南说spaces are the preferred indentation method。
请务必使用具有"空白模式"的文本编辑器。它允许您查看空格和制表符之间的区别。
例如,emacs的T
表示标签为黄色,空格为居中点。
如果您使用的是unix,则另一种检测标签与空格的方法是运行
M-x whitespace-mode
:
cat -A <filename>
此处,标签由% 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....$
描述。
将标签替换为4个空格以修复语法错误。