AWS |模块中的语法错误:语法无效
AWS | Syntax error in module': invalid syntax
我创建了 python 脚本,该脚本在 AWS Lambda 函数中作为 zip 文件上传,其中捆绑了 stompy 库。
python 2.7 的日志:-
Response:
null
Request ID:
"c334839f-ee46-11e8-8970-612f1dc92e41"
Function Logs:
START RequestId: c334839f-ee46-11e8-8970-612f1dc92e41 Version: $LATEST
CONNECTION Started
CONNECTION established
CONNECTION Subscribed
[WARNING] 2018-11-22T11:07:12.798Z c334839f-ee46-11e8-8970-612f1dc92e41 Unknown response frame type: '' (frame length was 3)
END RequestId: c334839f-ee46-11e8-8970-612f1dc92e41
REPORT RequestId: c334839f-ee46-11e8-8970-612f1dc92e41 Duration: 10027.75 ms Billed Duration: 10100 ms Memory Size: 128 MB Max Memory Used: 30 MB
我的代码:-
import time
import boto3
import stomp
kinesis_client = boto3.client('kinesis')
class Listener(stomp.ConnectionListener):
msg_list = []
def on_error(self, headers, message):
print('received an error "%s"' % message)
def on_message(self, headers, message):
print('received a message "%s"' % message)
kinesis_client.put_record(
StreamName='Purchasing',
Data=u'{}\r\n'.format(message).encode('utf-8'),
PartitionKey='0'
)
def lambda_handler(event, context):
conn = stomp.Connection(host_and_ports=[('b-4714-4441-8166-47aae158281a-1.mq.eu-central-1.amazonaws.com', 8162)])
lst = Listener()
conn.set_listener('Listener', Listener())
conn.start()
conn.connect(login='test_mq', passcode='test_mq')
conn.subscribe(destination='/queue/Purchasing', id='b-4714-4441-8166-47aae158281a', ack='auto')
message = lst.msg_list
print('Waiting for messages "%s"' % message)
time.sleep(10)
conn.disconnect()
return ''
我不确定为什么我的消息没有出现在我的输出中,而是总是出现 "Response: null"。
编辑:正如@Petesh 所指出的,问题来自 stompy
(外部库),尚未移植到 Python3。
如果你查看源代码,你会发现:
except socket.timeout, exc:
这是 python3+
的无效语法
如果您 运行 在 python3.6/3.7 环境中使用 Lambda,则语法无效。
如果您选择 python 2.7,该问题可能会消失,但您还必须调整您的代码、库等。
我创建了 python 脚本,该脚本在 AWS Lambda 函数中作为 zip 文件上传,其中捆绑了 stompy 库。
python 2.7 的日志:-
Response:
null
Request ID:
"c334839f-ee46-11e8-8970-612f1dc92e41"
Function Logs:
START RequestId: c334839f-ee46-11e8-8970-612f1dc92e41 Version: $LATEST
CONNECTION Started
CONNECTION established
CONNECTION Subscribed
[WARNING] 2018-11-22T11:07:12.798Z c334839f-ee46-11e8-8970-612f1dc92e41 Unknown response frame type: '' (frame length was 3)
END RequestId: c334839f-ee46-11e8-8970-612f1dc92e41
REPORT RequestId: c334839f-ee46-11e8-8970-612f1dc92e41 Duration: 10027.75 ms Billed Duration: 10100 ms Memory Size: 128 MB Max Memory Used: 30 MB
我的代码:-
import time
import boto3
import stomp
kinesis_client = boto3.client('kinesis')
class Listener(stomp.ConnectionListener):
msg_list = []
def on_error(self, headers, message):
print('received an error "%s"' % message)
def on_message(self, headers, message):
print('received a message "%s"' % message)
kinesis_client.put_record(
StreamName='Purchasing',
Data=u'{}\r\n'.format(message).encode('utf-8'),
PartitionKey='0'
)
def lambda_handler(event, context):
conn = stomp.Connection(host_and_ports=[('b-4714-4441-8166-47aae158281a-1.mq.eu-central-1.amazonaws.com', 8162)])
lst = Listener()
conn.set_listener('Listener', Listener())
conn.start()
conn.connect(login='test_mq', passcode='test_mq')
conn.subscribe(destination='/queue/Purchasing', id='b-4714-4441-8166-47aae158281a', ack='auto')
message = lst.msg_list
print('Waiting for messages "%s"' % message)
time.sleep(10)
conn.disconnect()
return ''
我不确定为什么我的消息没有出现在我的输出中,而是总是出现 "Response: null"。
编辑:正如@Petesh 所指出的,问题来自 stompy
(外部库),尚未移植到 Python3。
如果你查看源代码,你会发现:
except socket.timeout, exc:
这是 python3+
的无效语法如果您 运行 在 python3.6/3.7 环境中使用 Lambda,则语法无效。
如果您选择 python 2.7,该问题可能会消失,但您还必须调整您的代码、库等。