我第一次使用asyncio,并且遇到了两个错误: 1)RuntimeError:set_wakeup_fd仅在主线程中有效 2)RuntimeError:无法添加子处理程序,子监视程序没有附加循环
使用场景:
我必须执行两个终端命令,一个接着另一个。为了确保第二条命令仅在第一条命令之后执行,我使用asyncio设置循环并运行它们。
我试图最终使用flask API在此python文件中执行功能。
是否有人遇到这些错误并可以指导我解决该错误?
任何帮助都会很棒!
代码:
async def segmentVide(command):
process = await asyncio.create_subprocess_shell(
command,
stdout=asyncio.subprocess.PIPE)
stdout, stderr = await process.communicate()
asyncio.get_child_watcher()
return stdout.decode().strip()
def segmentOutput(folderCreated):
#command = MP4Box terminal command
loop = asyncio.new_event_loop()
asyncio.get_child_watcher().attach_loop(loop)
asyncio.set_event_loop(loop)
coro = loop.run_in_executor(None, segmentVide, command)
loop.run_until_complete(coro)
loop.close()
print('completed')
还有另一个函数可以执行另一个终端命令,但异步用法部分也相同。