Python 3.2.2:xmlrpc.client调用中的无法解释的错误 - “类型'int'的参数不可迭代”

时间:2012-01-07 03:43:36

标签: python exception python-3.x iteration xml-rpc

与之前的问题TypeError: argument of type 'int' is not iterable不同,在我的案例中似乎没有一个明显的索引问题。

在下面的代码中,testcfg.agents是主机名和/或IP地址列表,testcfg.portxmlrpc调用应使用的端口。 DSEvent类为Active Directory中的事件建模,DSEvent.eventcommand是一个包含命令及其参数的列表(通过xmlrpc调用代理,代理使用{{1}执行它}模块。)

subprocess

我得到的确切异常是(剥离模块的各种回溯):

# Create a list of agents to process events from
agent_list = []
for a in testcfg.agents:
    agent_list.append(xmlrpc.client.ServerProxy("http://" + a + ':' + testcfg.port))

# Initial user creation:
for j in range(5):
    init_event = DSEvent(type = 'add', is_important = True)
    agent_eB = random.choice(agent_list)
    agent_eB.execute(init_event.eventcommand) # This line throws the fault described below!

我无法理解这个错误可能来自哪里。虽然xmlrpc.client.Fault: <Fault 1: "<class 'TypeError'>:argument of type 'int' is not iterable"> 是一个可迭代对象(列表),但我在其他代码中通过init_event.eventcommand传递并返回了可迭代对象,而没有遇到此错误。我检查了意外的变量重用,我认为这也不是问题所在。我真的很喜欢这里的一些帮助!

作为参考,以下是此错误的完整回溯:

xmlrpc

2 个答案:

答案 0 :(得分:0)

您可能需要传入一个可迭代的,例如整数列表...

答案 1 :(得分:0)

我想我已经解决了这个问题,至少部分解决了这个问题。显然远程函数采用一组参数。改变

agent_eB.execute(init_event.eventcommand)

agent_eb.execute((init_event.eventcommand,))

似乎修复了这个特殊的错误。