与之前的问题TypeError: argument of type 'int' is not iterable不同,在我的案例中似乎没有一个明显的索引问题。
在下面的代码中,testcfg.agents
是主机名和/或IP地址列表,testcfg.port
是xmlrpc
调用应使用的端口。 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
答案 0 :(得分:0)
您可能需要传入一个可迭代的,例如整数列表...
答案 1 :(得分:0)
我想我已经解决了这个问题,至少部分解决了这个问题。显然远程函数只采用一组参数。改变
agent_eB.execute(init_event.eventcommand)
到
agent_eb.execute((init_event.eventcommand,))
似乎修复了这个特殊的错误。