在服务器上运行python脚本以启动子进程或python线程时出错
我有两个python脚本,用于启动子流程。以下是我的脚本结构: MAIN.py 这些脚本除了启动整个流程并通过子流程调用另一个python脚本外,什么都不做 sub_process.py 这个脚本首先执行一堆SQL语句,然后通过再次调用自身来启动另一个子进程。生成的子流程数取决于每个子流程调用传递的参数。此外,SQl语句主要是insert语句在服务器上运行python脚本以启动子进程或python线程时出错,python,multithreading,centos,subprocess,python-multithreading,Python,Multithreading,Centos,Subprocess,Python Multithreading,我有两个python脚本,用于启动子流程。以下是我的脚本结构: MAIN.py 这些脚本除了启动整个流程并通过子流程调用另一个python脚本外,什么都不做 sub_process.py 这个脚本首先执行一堆SQL语句,然后通过再次调用自身来启动另一个子进程。生成的子流程数取决于每个子流程调用传递的参数。此外,SQl语句主要是insert语句 conn = connect(host=host_ip, port=21050, timeout=3600) cursor = conn.
conn = connect(host=host_ip, port=21050, timeout=3600)
cursor = conn.cursor()
sql = "SQL statement"
cursor.execute(sql)
result_set = cursor.fetchall()
for col1, col2 in result_set:
sql = "SQL statement 2"
cursor.execute(sql)
sql = "SQL statement 3"
cursor.execute(sql)
if col1 == 'para':
result = subprocess.Popen([sys.executable,"./sub_process.py"] + paramet)
result.wait()
现在,此安装程序在我的本地计算机上运行正常,但当我尝试在服务器上运行相同的安装程序时,它会引发以下错误:
当我转到impala UI检查查询状态时,我将异常视为状态。在显示为异常的查询配置文件上,它还显示查询状态:超出内存限制。但是当我从本地机器执行相同的查询时,没有异常,一切都正常运行
即使我只执行一条sql语句而不是一堆sql语句,同样的错误也会出现在服务器上,但不会出现在我的本地计算机上。我试图寻找一些原因,但找不到任何可能导致此错误的原因
我也尝试过python线程,但仍然得到与子进程相同的错误。线程代码的结构与上面的子进程相同
我的服务器上有CentOS 6.6、impala 2.0和impyla 0.9
我如何找到原因并解决它?如果问题没有得到解决,那么通过其他方式获得相同行为的解决方法是什么?我基本上想要的是,一旦一个进程在执行过程中达到某个点,它就应该启动另一个进程,并继续同时执行。一旦完成,则应等待子流程完成后再退出。我建议使用多处理。`如果paramet='para':result=subprocess.Popen[sys.executable,./sub_process.py]+paramet`无法工作。你能发布全部错误吗?@User这就是我在上面发布的全部错误。它没有显示任何其他错误
conn = connect(host=host_ip, port=21050, timeout=3600)
cursor = conn.cursor()
sql = "SQL statement"
cursor.execute(sql)
result_set = cursor.fetchall()
for col1, col2 in result_set:
sql = "SQL statement 2"
cursor.execute(sql)
sql = "SQL statement 3"
cursor.execute(sql)
if col1 == 'para':
result = subprocess.Popen([sys.executable,"./sub_process.py"] + paramet)
result.wait()
File "/usr/local/lib/python2.7/site-packages/impala/dbapi/hiveserver2.py", line 151, in execute
self._execute_sync(op)
File "/usr/local/lib/python2.7/site-packages/impala/dbapi/hiveserver2.py", line 159, in _execute_sync
self._wait_to_finish() # make execute synchronous
File "/usr/local/lib/python2.7/site-packages/impala/dbapi/hiveserver2.py", line 181, in _wait_to_finish
raise OperationalError("Operation is in ERROR_STATE")
OperationalError: Operation is in ERROR_STATE