如何验证Amazon Kinesis Python客户端是否正常工作

时间:2015-05-05 02:15:54

标签: python amazon-web-services consumer amazon-kinesis

我正在尝试使用Python的KCL库(https://github.com/awslabs/amazon-kinesis-client-python)构建Amazon Kinesis Python使用者。我首先检查了示例代码。我能够运行示例代码的生产者和消费者脚本部分,但是我无法验证来自我的kinesis流(带有一个分片)的数据是否被推送到示例Python使用者脚本,sample_kclpy_app.py

我使用amazon_kclpy_helper.py生成可以通过sample.properties文件调用Python脚本的Java命令。我运行了Java命令,我可以从终端输出中看到正在读取Kinesis流中的数据。我在Python使用者脚本的print函数中添加了process_record语句,以检查数据是否被推送到它。但它没有出现在终端输出中。

我还尝试使用logging生成STDOUT消息,以及写入文件。我还在Python代码中添加了assert 0行来强制使脚本失败,并在日志输出中看到异常。然后,我特意在Python代码中添加了语法错误。但是,似乎所有这些都没有被Java MultiLangDaemon检测到,它只是继续生成INFO日志消息。

可能是什么问题? 有没有更好的方法来检查数据是否确实被发送到Python使用者脚本的process_record函数?

2 个答案:

答案 0 :(得分:6)

经过多次试验和错误后,我发现分配给executableName的Python脚本应该从调用它的Java KCL进程中可见。

快速解决方法是将PATH环境变量设置为脚本目录,并使脚本成为可执行文件(例如chmod +x

答案 1 :(得分:4)

我遇到了同样的问题,我的代码似乎从未运行过。直到我查看Node版本,才意识到executableName中的sample.properties是运行的命令,而不仅仅是python文件的名称。我将executableName = sample_kclpy_app.py 更改为executableName = python sample_kclpy_app.py ,它开始按预期工作。