3

我正在使用 ceilometer python API 并将数据发布到 pubnub。不知道这个错误是什么意思。

这是我认为导致问题的代码部分,

def init_Data(data, channel):
  cpu_sample = cclient.samples.list(meter_name ='cpu_util')
  for each in cpu_sample:
    timetamp = each.timestamp
    volume =  each.counter_volume
    volume_int = int(volume)
    data_volume ={'value': volume_int}
    data=json.dumps(data_volume)
    print (data)


pubnub.publish(channel='orbit_channel', callback= init_Datar)
4

2 回答 2

5

publish() 至少需要 3 个参数(给定 3 个)

如此可怕的错误信息!令人困惑的一点self是,即使没有明确提供,它也被视为一个论点。

所以你需要提供 2 个参数。而你做到了!但是您需要提供 2 个必需参数,而您只提供了 1 个必需参数和 1 个可选参数。检查 API 文档pubnub.publish()以了解您缺少什么。

于 2015-06-30T11:55:32.807 回答
1

虽然丹尼尔提供了一个很好的解释,但我想要一个极简主义的例子并且能够想出这个:

>>> class Foo(object):
...     def __init__(self, arg1, arg2=None):
...         pass
... 
>>> Foo(arg2=1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __init__() takes at least 2 arguments (2 given)

因此提供了两个参数(selfarg2),但它表示至少需要两个位置参数(selfarg1)。所以Foo(arg1=1)会起作用,就像Foo(1, 2)and一样Foo(1, arg2=2)

于 2017-07-26T22:01:39.833 回答