python - 并行处理捕获失败python
问题描述
嗨,我已经建立了一个进程来将文件列表(存储在文件中)并行发送到 hdfs。但是,如果任何文件有任何错误,则此特定进程如果未捕获任何错误。如果任何并行线程失败,我们如何捕获错误并使进程失败
def puthdfsparallel(srcdir,tgtdir,max_processes,filter=None):
#files = glob.glob(srcdir)
#files = srcdir.split(",")
try:
files = [line.strip() for line in open(srcdir, 'r')]
processes = set()
max_processes = int(max_processes)
for name in files:
put_command_string = "hdfs dfs -put -f " + name + " " + tgtdir + "/" + os.path.basename(name)
logging.info("Processing of the command - " + put_command_string)
logging.debug("Processing of the command - " + put_command_string)
processes.add(subprocess.Popen(put_command_string,shell=True, stdout=PIPE, stderr=PIPE))
if len(processes) >= max_processes:
os.wait()
processes.difference_update([p for p in processes if p.poll() is not None])
for p in processes:
if p.poll() is None:
p.wait()
return True
except Py4JJavaError as e:
s = e.java_exception.toString()
logging.error("The sendhdfsparallel functioned failed with error" + s)
return False
请帮忙
解决方案
推荐阅读
- firebase - 如何在 React Native 中获取从 Firebase 存储下载的图像文件的本地文件路径
- node.js - 如何在 ubuntu 20.4 中删除 NodeJS?
- libimobiledevice - 如何获得设计的零件序列号,例如“FrontFacingCameraModuleSerialNumber”,但已设计
- python - Beautiful Soup 没有返回我在手动检查页面时看到的完整 HTML 代码
- unity3d - 使用 zenject 在 Unity 中注入添加加载的场景
- java - 将 2 个 wav 文件合并为一首同步歌曲
- if-statement - Excel - 公式中的下拉列表
- macos - 为什么在mac上使用ld命令编译.o文件时出现错误/警告?
- java - 运行 Spring Boot 批处理应用程序时出现 BeanCreationException 错误
- python - 尝试使用 read_csv 读取时,我的列向左移动