AWS 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

当我尝试在Lambda中测试python函数时,我得到以下错误:

“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....$