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

时间:2015-06-30 11:50:06

标签: python function ceilometer

我正在使用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)

2 个答案:

答案 0 :(得分:5)

  

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

这么糟糕的错误信息!令人困惑的一点是self也被视为参数,即使它没有明确提供。

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

答案 1 :(得分: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),但它表示至少需要2个位置参数(self和{{1} })。因此,arg1可以正常工作,Foo(arg1=1)Foo(1, 2)也是如此。