【问题标题】:How can I debug KCL(python) in python script?如何在 python 脚本中调试 KCL(python)?
【发布时间】:2019-04-17 09:32:51
【问题描述】:

我使用 KCL 库供 python 消费者使用,但我不知道如何在 python 脚本中获取数据等?

它通过 MultiLangDaemon 工作并基于 java。我有一个在 java 之上工作的 python 脚本(我使用库中的示例并使用sample_kclpy_app.py),当我启动 java(由 python 生成)时,我无法获取数据或打印数据。

如何通过 python 脚本调试它?我尝试并行启动 sample_kclpy_app.py,但什么也没发生。

【问题讨论】:

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


    【解决方案1】:

    Kinesis 客户端库通过 STDIN / STDOUT 在 Java 和 Python 之间进行通信,因此可以通过指向文件的 Python 日志记录对象来执行调试,而不是使用 print 语句。比如sample_kclpy_app.py内:

    添加到导入部分:

    import logging
    

    添加到RecordProcessorinit方法:

    logging.basicConfig(filename='test.log',
            format='%(asctime)s %(levelname)-8s %(message)s',
            datefmt='%Y-%m-%d %H:%M:%S',
            level=logging.DEBUG)
    

    添加到process_record 方法(用于简单的日志记录示例):

    logging.debug('Data: %s', data.decode('utf8'))
    

    有关日志记录模块的更多详细信息,请参阅https://docs.python.org/3/library/logging.html

    【讨论】:

    • 我注意到 logging 的输出被 Java 解释为命令。打印了日志,但 Java 捕获了这些并尝试运行 2020-06-08 22:26:56,436 [multi-lang-daemon-0001] ERROR s.a.k.multilang.DrainChildSTDERRTask [NONE] - Received error line from subprocess [INFO - 2020-06-08 22:26:56,435 - root:main.py(180) - Downloading file tmp/name_identifier] for shard shardId-000000000000 INFO - 2020-06-08 22:26:56,435 - root:main.py(180) - Downloading file tmp/name_identifier
    猜你喜欢
    • 2017-03-27
    • 1970-01-01
    • 2014-10-29
    • 2012-05-01
    • 1970-01-01
    • 2023-03-27
    • 2021-07-23
    • 2016-10-22
    • 1970-01-01
    相关资源
    最近更新 更多