Django Apache – Exécuter le script en tant que racine

Mon projet django appelle un fichier python à une heure planifiée en utilisant “at” scheduler. Ceci est exécuté dans mes models.py

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

Où [heure] est l’heure programmée. Cela fonctionne parfaitement quand je l’exécute dans le serveur de développement Django (en général, je travaille en tant que root mais aussi avec d’autres utilisateurs). Mais lorsque j’ai déployé mon application sur Apache en utilisant mod_wsgi, cela ne fonctionne pas. at logs indique que le travail était planifié mais ne l’exécute pas. J’ai tout essayé, passant de la propriété à www-data, aux permissions, à l’exécutable à tous les utilisateurs, à setuid à root (Huge Security Issue). La dernière chose que je veux faire est de lancer apache en tant qu’utilisateur root.

Utilisez cron ou le céleri pour les tâches planifiées. Si vous devez exécuter quelque chose en tant que root, il serait judicieux de réécrire votre script en tant que démon simple et de l’exécuter en tant que root, vous pouvez lui passer des commandes assez facilement avec zeromq .