【问题标题】:How to capture error messages via Python when inserting data in QuestDB?在 QuestDB 中插入数据时如何通过 Python 捕获错误消息?
【发布时间】:2021-05-03 13:40:49
【问题描述】:

目前我正在通过 Python 通过 Influx Line Protocol (ILP) 将数据保存到 QuestDB,如下所示:

    import socket

    ilp_msg = 'my_table,name=server_timestamp value=12.4\n'
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        sock.connect((HOST, PORT))
        sock.send((ilp_msg).encode())
    except socket.error as e:
        raise ValueError(f'Got error: {e}')
    sock.close()

如果我的ilp_msg 或服务器或数据库有问题,上述代码将执行而不会引发任何错误。它将登录到数据库上的 sdr out(或 std err)。

我的问题:如何通过 python 将数据保存到 QuestDB 并捕获任何错误消息,以便我知道我的保存方法对于特定行失败。

【问题讨论】:

    标签: python database sockets python-sockets questdb


    【解决方案1】:

    我看到的唯一方法不是使用 ILP,而是通过 Postgres Driver psycopg2 插入行。

    ILP 似乎是一种以“一劳永逸”的方式将数据流式传输到服务器的协议。

    【讨论】:

    • 出于好奇,您如何判断一个协议是否是单向的?
    • 协议没有描述服务器响应,所以无论服务器发回什么都只是乱七八糟的字节(如果它发回任何东西的话)。也许 Influx 本身通过 HTTP 使用它,并且 HTTP 响应代码有一些意义,但对于 QuestDB,它是 TCP,因此您无法返回响应代码 200 或 500。
    猜你喜欢
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2018-01-16
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多