我正在为用户创建一个小仪表板,允许他运行特定的作业(job).我正在使用Django,所以我希望他能够单击一个链接来启动作业(job),然后将页面返回给他,并显示作业(job)正在运行的消息.工作结果将在稍后通过邮箱发送给他.

我想我应该用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)

这将在后台启动子进程.您的脚本将继续正常运行.

阅读文档here.

Django相关问答推荐

使用Django ORM在不相关的模型之间进行左外连接?

在Django管理中仅显示外键的特定值

在 Django 中重组多对多字段

根据当前对象中的多对多字段过滤对象

为什么我的搜索功能返回错误相关字段查找无效:​​类别

如果一个应用程序有多个具有相同字段的模型,那么保持 DRY 的最佳实践是什么?

如何在 Django 中将下一个 8 月 1 日添加为 DateTimeField 默认值

遍历django模板中的外键相关表

Django 嵌套事务 - with transaction.atomic()

EmailBackend 用于在 Django 中通过多个 SMTP 发送邮箱

Django中基于令牌的身份验证

django 管理员登录突然要求 csrf 令牌

如何缓存 Django Rest Framework API 调用?

Django - 在模板中显示当前日期和时间

Django: Admin:在管理员中更改字段的小部件

django Datefield 到 Unix 时间戳

模拟 Django 查询集以测试采用查询集的函数

刷新时重新提交的django表单

在 Django 开发服务器中关闭静态文件的缓存

django.db.utils.OperationalError 无法连接到服务器