__init__() 收到了意外的关键字参数 'timeout' 在 Python 子进程中

3 投票
1 回答
12451 浏览
提问于 2025-04-18 10:04

我正在尝试运行以下代码,这段代码使用了Python的'subprocess'模块。

subprocess.call(cli_args, stdout=client_log, stderr=client_log, timeout=10)

我使用了timeout参数,具体内容可以在这里找到。这个参数的作用是,如果子进程在执行过程中卡住了,就会跳过这行代码并终止它。

但是当我运行这段代码时,出现了以下错误。

Traceback (most recent call last):
  File "test.py", line 152, in <module>
    ret = runServiceTest(test_name, server_executable, server_extra_args, client_executable, client_extra_args, protocol, transport, 9090, 0, 0)
  File "test.py", line 102, in runServiceTest
    ret = subprocess.call(cli_args, stdout=client_log, stderr=client_log, timeout=10)
  File "/usr/lib/python2.7/subprocess.py", line 522, in call
    return Popen(*popenargs, **kwargs).wait()
TypeError: __init__() got an unexpected keyword argument 'timeout'

这是什么原因呢?我该如何解决这个问题?我的完整代码可以在这里找到。

1 个回答

6

根据你使用的 print 语句来看,你是在用 Python2.x 版本。在这个版本中,subprocess.call 这个函数是没有 timeout 参数的:

subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)

https://docs.python.org/2/library/subprocess.html

撰写回答