-3

I have created python script which is uploaded as a zip file in AWS Lambda function with stompy libraries bundled in them.

Logs for 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

My Code:-

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 ''

I am not sure why my message is not showing up in my output,instead it always shows up "Response: null".

2
  • Please post your code as text, not a screenshot. We might need to copy and paste your code to our own text editors to reproduce your problem, and we can't do that from a graphic. Commented Nov 20, 2018 at 14:46
  • @cdarke I have attached the code Commented Nov 20, 2018 at 14:49

1 Answer 1

1

EDIT: As pointed by @Petesh, the issue comes from stompy(external library), which hasn't been ported to Python3.

If you check the source code, you can find this:

except socket.timeout, exc:

which is invalid syntax for python3+

If you run your Lambdas in python3.6/3.7 environment, the syntax is invalid.

The issue might go away if you choose python 2.7, but you will also have to adjust your code, libraries, etc.

Sign up to request clarification or add additional context in comments.

24 Comments

Can you clarify that the issue is with the stompy module, which has not been ported to python3 - it's not clear from your answer that this is what's the trigger of the issue.
@AlexK.. Thank you.. What adjustments I need to do to my code if I choose python 2.7. Moreover, How or where can I get python3+ stompy libraries
@AlexK.. Also I have updated the error logs for python 2.7
This pypi.org/project/stomp.py/#description looks like a alternative for python 3
@AlexK I have used your link pypi.org/project/stomp.py/#files and downloaded tar.gz file. But it doesn't have stomp.py files in it
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.