2024-04-29 01:53:33 发布
网友
我正在为用户创建一个小仪表板,允许他运行特定的作业。我正在使用Django,所以我希望他能够单击一个链接来启动作业,然后将页面返回给他,并显示作业正在运行的消息。工作的结果稍后会通过电子邮件发给他。
我相信我应该使用subprocess.Popen,但我不确定。所以在伪代码中,我想做的是:
subprocess.Popen
if job == 1: run script in background: /path/to/script.py return 'Job is running'
子流程。Popen确实是你要找的。
p = subprocess.Popen([sys.executable, '/path/to/script.py'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
这将在后台启动子进程。你的脚本将继续正常运行。
阅读文档here。
如果您考虑长期扩展,那么在消息队列中运行此命令无疑是一种方法。向在后台不断运行的队列发送消息,并编写作业处理程序来处理不同类型的消息。
既然你用的是Django,我觉得Beanstalkd非常适合。Here's这是一个很好的关于这个主题的教程。那篇文章的第一条评论也有一些好的建议。
就我个人而言,我使用了一个用Erlang编写的自定义内存队列服务器,用C编写了Python绑定,但是redis看起来它可能是未来队列/消息传递需求的一个很好的竞争者。希望这有帮助!
子流程。Popen确实是你要找的。
这将在后台启动子进程。你的脚本将继续正常运行。
阅读文档here。
如果您考虑长期扩展,那么在消息队列中运行此命令无疑是一种方法。向在后台不断运行的队列发送消息,并编写作业处理程序来处理不同类型的消息。
既然你用的是Django,我觉得Beanstalkd非常适合。Here's这是一个很好的关于这个主题的教程。那篇文章的第一条评论也有一些好的建议。
就我个人而言,我使用了一个用Erlang编写的自定义内存队列服务器,用C编写了Python绑定,但是redis看起来它可能是未来队列/消息传递需求的一个很好的竞争者。希望这有帮助!
相关问题 更多 >
编程相关推荐