我在AWS中有一个相对简单的线性回归lambda。每个实例中称为函数的日志显示以下内容:
/opt/python/sklearn/externals/joblib/_multiprocessing_helpers.py:38: UserWarning: [Errno 38] Function not implemented. joblib will operate in serial mode
warnings.warn('%s. joblib will operate in serial mode' % (e,))
[我怀疑这是由于sklearn在lambda上运行(即'无服务器')并试图根据this question和this GH issue确定其多处理能力。
我还从GH那里了解到这不是一个“可解决的”问题,当在这些硬件上具有这些依赖项进行部署时,总是会发生这种情况。我正在恢复预期的结果(即使我当前已将默认的最小lambda内存最大化为128mb)。
我的目标是控制警告,并且会知道是否可以通过以下两种方式:
要捕获警告并防止将其传递到cloudwatch日志中,可以按以下方式过滤警告。
import json
import warnings
warnings.filterwarnings('error')
try:
import sklearn
except Warning:
pass
def lambda_handler(event, context):
# TODO implement
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
article here,尤其是结尾处,将重新创建并过滤警告。