8

我正在尝试使用 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 消息以及写入文件。我还在assert 0Python 代码中添加了一行以强制脚本失败,并看到日志输出中会出现异常。然后,我故意在 Python 代码中添加了一个语法错误。但是,Java MultiLangDaemon 似乎没有检测到所有这些,它只是继续运行并大量输出 INFO 日志消息。

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

4

2 回答 2

8

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

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

于 2015-06-03T03:30:31.267 回答
6

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

于 2015-05-18T19:17:16.207 回答