我的 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)
其中 [时间] 是计划时间。 当我在 Django Dev 服务器中运行它时,它工作得很好(我通常以 root 身份运行,但它也适用于其他用户) 但是当我使用 mod_wsgi 在 Apache 上部署我的应用程序时,它不起作用。 at logs 显示作业已安排但未执行。 我尝试了一切,从将所有权更改为 www-data、权限,使其成为所有用户的可执行文件,再到 setuid 到 root(巨大的安全问题) 我最不想做的就是以 root 用户身份运行 apache。
最佳答案
使用cron或 celery对于计划任务。如果你需要以 root 身份运行某些东西,将脚本重新编写为一个简单的守护进程并以 root 身份运行它是有意义的,你可以使用 zeromq 很容易地向它传递命令。 .
关于python - Django Apache - 以根用户身份运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7043846/