我有一种情况,我可以从python中获取数据,所以我只能通过python发布。我需要可视化这些数据,因此我需要通过JavaScript订阅该频道。我的可视化libaray C3.js只将数据采用以下格式:
message: {
columns: [
['x', volume],
['y', timetamp]
]
}
在python中获取这样的数据对我来说很难。更简单的解决方案是通过JavaScript订阅并再次将数据重新发布为我想要的格式。我的问题是,是否有可能在PUBNUB中这样做,如果是这样我是否需要将数据发布到另一个频道或同一频道可以吗?
我的python代码是:
for each in data:
y = each.counter_volume
x = each.timestamp
pubnub.publish(channel='orbit_channel', message=y)
我想要的输出是
message: {
"columns": [
["x", "2015-07-06T13:26:19", "2015-07-06T13:26:19","2015-07-06T13:26:19"],
["y", 5000.0, 5000.0, 5000.0]
]
}
答案 0 :(得分:3)
在python中获取这样的数据对我来说很难。
这种格式是JSON,在Python中可以将数据序列化为非常简单,试试json
模块:
import json
from time import gmtime, strftime
now = str(strftime("%Y-%m-%dT%H:%M:%S", gmtime()))
n = 5000.0
message = {"columns": [["x", now, now, now], ["y", n, n, n]]}
print "message: " + json.dumps(message, indent=4, separators=(',', ': '))
输出:
message: {
"columns": [
[
"x",
"2015-07-16T12:56:47",
"2015-07-16T12:56:47",
"2015-07-16T12:56:47"
],
[
"y",
5000.0,
5000.0,
5000.0
]
]
}
也许以预期的方式提供这样的数据更容易在JS文件中使用?