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

How to verify that Amazon Kinesis Python client is working

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

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

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

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

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

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

快速修复是将 PATH 环境变量设置为脚本的目录并使脚本成为可执行文件(例如 chmod +x