Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django Apache-以Root用户身份运行脚本_Python_Django_Apache_Mod Wsgi - Fatal编程技术网

Python Django Apache-以Root用户身份运行脚本

Python Django Apache-以Root用户身份运行脚本,python,django,apache,mod-wsgi,Python,Django,Apache,Mod Wsgi,我的django项目使用“at”调度器在预定时间调用python文件。这是在my 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-Dev服务器中运行它时,它可以完美地工作(我通常以root用户身份运行,但它也可

我的django项目使用“at”调度器在预定时间调用python文件。这是在my 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-Dev服务器中运行它时,它可以完美地工作(我通常以root用户身份运行,但它也可以与其他用户一起工作) 但是当我使用mod_wsgi在Apache上部署我的应用程序时,它不起作用。at日志显示作业已被调度,但未执行。 我尝试了一切,从更改www数据的所有权、权限、将其转换为所有用户的可执行文件,到setuid到root(巨大的安全问题)
我最不想做的事情是以root用户身份运行apache。

将或用于计划任务。如果您需要以root身份运行某些东西,那么将脚本作为一个简单的守护进程重新编写并以root身份运行是有意义的,您可以非常轻松地向它传递命令。

这不是一个重复性作业,所以我可以使用cron吗?它不是重复性的?我想是的。您希望此任务何时/多久运行一次?我建议您使用芹菜来剥离任务。您可以在没有代理的情况下使用它,它的设置相当简单。为了解决root问题,您可以设置一个以root身份运行的守护进程,并使用zeromq或其他命令向其发出命令。谢谢。下次我会记下来的。但是,我让python编写了一个bash文件,并让at执行该文件以避免根问题。然而,我注意到,这个问题只会在使用apache的生产环境中出现。
at
命令只使用要计划执行的可执行文件的名称,不带任何参数
echo
基本上强制
at
调度可执行文件及其参数。在手册页中查找
,我认为您缺少一组引号。Echo是作为python关键字编写的。