Crontab 启动 Python 脚本但 SystemD 不启动?
Crontab Launches Python Script but SystemD Does Not?
我可以通过 ssh 登录我的 AWS EC2 服务器并输入:
cd /opt/myWebApp
sudo python3 /opt/myWebApp/manage.py myCronJob
...它 运行s。
我也可以通过 crontab 启动相同的脚本:
0 */6 * * * sudo python3 /opt/myWebApp/manage.py myCronJob --settings=server.settings.production
但是当我尝试在 SystemD 中使用 .service 文件 运行 时:
ExecStart='/usr/bin/python3.7' /opt/myWebApp/manage.py myCronJob --settings=server.settings.production
...我得到:
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?
$PYTHONPATH
和 $VIRTUAL_ENV
为空。 /opt/myWebApp/server_venv
也是空的。在 /usr/bin/python3.7
处有一个 python,但我如上所述在 SystemD .service 文件中引用它,它会抛出该错误。
我错过了什么?
解决了!
ExecStart='/etc/alternatives/python3' ./manage.py myCronJob --settings=server.settings.production
WorkingDirectory=/opt/myWebapp
User=myUser
用户(上面代码中的'myUser')可以访问 Django。
我可以通过 ssh 登录我的 AWS EC2 服务器并输入:
cd /opt/myWebApp
sudo python3 /opt/myWebApp/manage.py myCronJob
...它 运行s。
我也可以通过 crontab 启动相同的脚本:
0 */6 * * * sudo python3 /opt/myWebApp/manage.py myCronJob --settings=server.settings.production
但是当我尝试在 SystemD 中使用 .service 文件 运行 时:
ExecStart='/usr/bin/python3.7' /opt/myWebApp/manage.py myCronJob --settings=server.settings.production
...我得到:
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?
$PYTHONPATH
和 $VIRTUAL_ENV
为空。 /opt/myWebApp/server_venv
也是空的。在 /usr/bin/python3.7
处有一个 python,但我如上所述在 SystemD .service 文件中引用它,它会抛出该错误。
我错过了什么?
解决了!
ExecStart='/etc/alternatives/python3' ./manage.py myCronJob --settings=server.settings.production
WorkingDirectory=/opt/myWebapp
User=myUser
用户(上面代码中的'myUser')可以访问 Django。