【问题标题】:Can we republish messages in PUBNUB我们可以在 PUBNUB 中重新发布消息吗
【发布时间】:2015-07-16 11:11:16
【问题描述】:

我有一种情况,我可以从 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]
]
}

【问题讨论】:

  • 它是否适用于以下脚本?如果它解决了您的问题,请考虑将其设为可接受的答案。

标签: javascript python json pubnub


【解决方案1】:

在 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 文件中使用?

【讨论】:

  • 感谢您的回答,我尝试了您的方法,但它给了我以下结果,这不是我想要的输出: message: {"columns": [["x", "2015-07- 06T13:26:19"], ["y", 5000.0]]} 消息:{"columns": [["x", "2015-07-06T13:26:19"], ["y", 5000.0] ]} 消息:{"columns": [["x", "2015-07-06T13:26:19"], ["y", 5000.0]]}
  • 我想要的输出类似于上面,编辑
  • 您可以自己修改 scipt,json 模块就是您所需要的。更改了我的答案以完全匹配您想要的输出...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 2021-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多