AWS |Синтаксическая ошибка в модуле ': неверный синтаксис - PullRequest
0 голосов
/ 20 ноября 2018

Я создал скрипт Python, который загружается в виде zip-файла в функцию AWS Lambda с включенными в них библиотеками 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".

1 Ответ

0 голосов
/ 20 ноября 2018

РЕДАКТИРОВАТЬ : Как указано @Petesh, проблема связана с stompy (внешняя библиотека), которая не была перенесена в Python3.

Если вы проверяете исходный код, вы можете найти это:

except socket.timeout, exc:

, который является недопустимым синтаксисом для python3 +

Если вы запускаете свои Lambdas в среде python3.6 / 3.7, синтаксис недопустим.

Эта проблема может исчезнуть, если вы выберете Python 2.7, но вам также придется настроить свой код, библиотеки и т. Д.

...