我正在Raspberry Pi(python 2.7)中设置Flask项目。 手动调用python脚本时,它可以完美运行。
但是,我试图在启动后自动运行该脚本,但无法正常运行。
我试图修改/ etc / profile在启动后运行脚本;
/ etc / profile
# at the end of the profile
#TRIED sudo python /home/pi/project/script.py &
#TRIED sleep 10;sudo python /home/pi/project/script.py &
sudo python /home/pi/project/start_script.py & # it also fails
start_script.py
import os
import time
time.sleep(10)
os.system('sudo python /home/pi/project/script.py &')
我希望运行服务器没有任何问题,但是启动后会出现以下错误,
socket.error: [Errno 98] Address already in use
但是,这没有意义,因为这应该只发生一次。
我在这里错过了什么吗?感谢您阅读我的帖子。
关于, BBy
答案 0 :(得分:-1)
我建议为您的应用程序创建服务,这并不像您想的那样痛苦。这将在网络启动后开始,因此您不需要添加延迟的中间脚本。如果您不想以root用户(默认)的身份运行,或者想使用virtualenv,可以将其他参数添加到该文件中。
创建以下文件/etc/systemd/system/my_project.service:
[Unit]
Description=My Project
After=network.target
[Service]
WorkingDirectory=/home/pi/project/
ExecStart=/usr/bin/python /home/pi/project/script.py
Restart=always
[Install]
WantedBy=multi-user.target
然后您可以运行:
sudo systemctl start my_project
sudo systemctl status my_project
如果不好,请调整并尝试:
sudo systemctl restart my_project
sudo systemctl status my_project
如果好:
sudo systemctl enable my_project
重新启动您的pi并验证其是否可以正常工作。
还要仔细检查您正在使用的任何端口以及系统上正在运行的其他端口。