Python,使用 os.system - Python 脚本是否有办法在不等待调用完成的情况下通过它?

标签 python django command-line os.system

我正在尝试使用 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 灵活得多。如果我没记错的话,它包括异步进程生成,我认为这正是您要寻找的。

编辑: 我已经有一段时间没有使用 subprocess 模块了,但如果我没记错的话,subprocess.Popen 会立即返回,并且只有在您尝试与进程通信时(例如读取它的输出)使用 subprocess.communicate 如果没有输出,你的程序会阻塞等待输出。

关于Python,使用 os.system - Python 脚本是否有办法在不等待调用完成的情况下通过它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3830036/

相关文章:

python - 无法更改 Python Web.py 应用程序 Linode 示例

python - 如何在 Google App Engine 中运行自定义 python 脚本

python - Django Rest 应用程序未正确使用媒体根来提供图像

Django:从 Django View 进行测试时避免 HTTP API 调用

python - Django错误: Caught ImportError while rendering: No module named comments

python - 将多个 ip 地址的列表解析为单个变量

python - 在 contextlib.contextmanager 中产生

python - UTF-8 减号在 python 命令行参数中被拒绝

command-line - 用于查找顺序无关的唯一对的终端命令

c# - 如何使我正在运行的 .NET 应用程序能够在运行时接收命令?