我正在尝试使用 Python(通过 Django 框架)进行 Linux 命令行调用,并尝试了 os.system 和 os.open 但对于这两种方法,似乎 Python 脚本在进行命令行调用后挂起因为调用是为了实例化服务器(所以它永远不会“完成”,因为它意味着长期运行)。我知道用其他 Python 代码做这样的事情你可以使用 celery 之类的东西,但我认为有一种简单的方法可以让它只进行命令行调用而不是“绑定(bind)到它”以便它可以移动过去,我想知道我是否做错了什么...感谢您的任何建议。
我现在是这样打电话的
os.system("command_to_start_server")
也尝试过:
response = os.popen("command_to_start_server")
最佳答案
我不确定,但我认为 the subprocess module它的 Popen 比 os.popen 灵活得多。如果我没记错的话,它包括异步进程生成,我认为这正是您要寻找的。p>
编辑: 我已经有一段时间没有使用 subprocess 模块了,但如果我没记错的话,subprocess.Popen 会立即返回,并且只有在您尝试与进程通信时(例如读取它的输出)使用 subprocess.communicate 如果没有输出,你的程序会阻塞等待输出。
关于Python,使用 os.system - Python 脚本是否有办法在不等待调用完成的情况下通过它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3830036/