Django Apache - 以Root身份运行脚本

3 投票
1 回答
1353 浏览
提问于 2025-04-16 23:29

我的Django项目使用“at”调度器在预定时间调用一个Python文件。这是在我的models.py文件中执行的。

command = 'echo "python /path/to/script.py params" | /usr/bin/at -t [time] &> path/to/at.log'
status = os.system(command)

这里的[time]是预定的时间。 当我在Django开发服务器上运行时,这个功能完美无缺(我通常以root用户身份运行,但其他用户也可以正常工作)。 但是,当我把应用程序部署到Apache上并使用mod_wsgi时,它就不工作了。调度日志显示任务已被安排,但并没有执行。 我尝试了所有方法,从更改文件的所有权到www-data,设置权限,让所有用户都可以执行,甚至设置为root用户(这会有很大的安全隐患)。 我最后想做的就是以root用户身份运行Apache。

1 个回答

2

可以使用 croncelery 来处理定时任务。如果你需要以管理员身份运行某个程序,最好把你的脚本改写成一个简单的守护进程,然后以管理员身份运行它。这样你可以很方便地通过 zeromq 发送命令给它。

撰写回答