如何使用 Python 将 influx 线路协议记录写入 QuestDB?
How do I write influx line protocol records to QuestDB using Python?
如何从 python 向 QuestDB 发送 influx line 协议消息?我应该使用库还是应该写入套接字? node example 看起来像
const net = require("net")
const client = new net.Socket()
const HOST = "localhost"
const PORT = 9009
function run() {
client.connect(PORT, HOST, () => {
const rows = [
`trades,name=test_ilp1 value=12.4 ${Date.now() * 1e6}`,
`trades,name=test_ilp2 value=11.4 ${Date.now() * 1e6}`,
]
rows.forEach((row) => {
client.write(`${row}\n`)
})
client.destroy()
})
client.on("data", function (data) {
console.log("Received: " + data)
})
client.on("close", function () {
console.log("Connection closed")
})
}
run()
该示例的 Python 等效项如下所示:
import time
import socket
HOST = 'localhost'
PORT = 9009
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
sock.sendto(('trades,name=test_ilp1 value=12.4 %d' % (time.time_ns())).encode(), (HOST, PORT))
sock.sendto(('trades,name=test_ilp2 value=11.4 %d' % (time.time_ns())).encode(), (HOST, PORT))
except socket.error as e:
print("Got error: %s" % (e))
sock.close()
请注意,在流入行消息中调用 time.time_ns()
是可选的,因此您可以省略它,服务器会将系统时间分配为该行的时间戳。对于传入消息的格式,您可以在 questdb influx docs
上找到参考
如何从 python 向 QuestDB 发送 influx line 协议消息?我应该使用库还是应该写入套接字? node example 看起来像
const net = require("net")
const client = new net.Socket()
const HOST = "localhost"
const PORT = 9009
function run() {
client.connect(PORT, HOST, () => {
const rows = [
`trades,name=test_ilp1 value=12.4 ${Date.now() * 1e6}`,
`trades,name=test_ilp2 value=11.4 ${Date.now() * 1e6}`,
]
rows.forEach((row) => {
client.write(`${row}\n`)
})
client.destroy()
})
client.on("data", function (data) {
console.log("Received: " + data)
})
client.on("close", function () {
console.log("Connection closed")
})
}
run()
该示例的 Python 等效项如下所示:
import time
import socket
HOST = 'localhost'
PORT = 9009
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
sock.sendto(('trades,name=test_ilp1 value=12.4 %d' % (time.time_ns())).encode(), (HOST, PORT))
sock.sendto(('trades,name=test_ilp2 value=11.4 %d' % (time.time_ns())).encode(), (HOST, PORT))
except socket.error as e:
print("Got error: %s" % (e))
sock.close()
请注意,在流入行消息中调用 time.time_ns()
是可选的,因此您可以省略它,服务器会将系统时间分配为该行的时间戳。对于传入消息的格式,您可以在 questdb influx docs