2015-05-05 34 views
5

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

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

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

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

回答

5

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

速战速决是对PATH环境变量设置为脚本的目录,使脚本可执行文件(例如chmod +x

+0

我还必须重新运行'python setup.py install' – sheldonkreger

3

我有同样的问题,我的代码似乎永远不会运行。直到我看到节点版本时,我意识到executableNamesample.properties是运行的命令,而不仅仅是python文件的名称。我将executableName = sample_kclpy_app.py 更改为executableName = python sample_kclpy_app.py ,并开始按预期工作。

+0

感谢您的回答。我也这样做了,并让它工作。我认为真正的技巧是脚本应该在任何地方都可见(即将PATH变量设置为脚本的顶层目录)。我将PATH设置为指向脚本目录,通过'chmod'将脚本设置为可执行文件,并使其工作。 – Carlos