如何在 Python 中运行另一个脚本而不等待它完成?[复制]
-
23-08-2019 - |
题
这个问题在这里已经有答案了:
- 如何在Python中启动后台进程? 7 个答案
我正在为用户创建一个小仪表板,允许他运行特定的作业。我正在使用 Django,因此我希望他能够单击链接来启动作业,然后将页面返回给他,并显示作业正在运行的消息。工作结果稍后将通过电子邮件发送给他。
我相信我应该使用 subprocess.Popen
但我不确定。所以在伪代码中,这就是我想要做的:
if job == 1:
run script in background: /path/to/script.py
return 'Job is running'
解决方案
p = subprocess.Popen([sys.executable, '/path/to/script.py'],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
这将在后台启动子进程。您的脚本将继续正常运行。
阅读文档 这里.
其他提示
subprocess.Popen 确实是您正在寻找的。
尽管如果您发现想要开始在子进程和父进程之间通信大量信息,您可能需要考虑线程或像 Twisted 这样的 RPC 框架。
但很可能这些对于您的应用来说太重了。
不隶属于 StackOverflow