我有一个python wsgi脚本试图调用生成openssl脚本。使用subprocess.check_call(args)
,流程会抛出OSError [Errno 10] no child processes
。
opensll bin的所有者是root:root
。这可能是问题吗?或者apache不允许子进程吗?
仅使用subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
似乎工作正常,我只想等待并确保流程完成后再继续。
communicate()
和wait()
都失败并出现同样的错误。
在wsgi之外运行代码可以正常工作。
这是python 2.6顺便说一句。
答案 0 :(得分:1)
OSError [Errno 10] no child processes
可能意味着程序已经运行,但占用了太多内存并且已经死亡。
在Apache中启动作业很好。以root身份运行有点粗略,但并不是什么大不了的事。请注意,' root'帐户设置(例如PATH
)可能与您的帐户不同。这可以解释为什么它从shell运行而不是从Apache运行。
在程序中记录当前目录。如果脚本需要某个位置的某个模块,那么这将导致奇怪的问题。还有' root'往往没有"当前目录" (即:"。")在sys.path上。