我正在尝试为我的python-flask-socketio服务器创建一个自动启动服务。
我需要通过systemd启动一个python脚本。这是我的服务代码:
[Unit]
Description=AppName
[Service]
Type=forking
ExecStart=/usr/bin/python3 /opt/myapp/app.py
[Install]
WantedBy=multi-user.target
如果我尝试使用sudo service myservice start
手动启动它 - 它可以正常工作。它会暂停我的终端\ ssh窗口,但我可以关闭它,它的效果与预期的一样。
但是当我重新启动电脑时,它无法启动。使用systemctl status myservice
检查状态时,我会收到以下信息:
systemd[1]: Starting My Service...
systemd[1]: myserivce.service: Start operation timed out. Terminating.
systemd[1]: Failed to start My Service.
systemd[1]: myserivce.service: Unit entered failed state.
systemd[1]: myserivce.service: Failed with result 'timeout'.
我在这里做错了什么?
答案 0 :(得分:4)
你的类型似乎是错误的,分叉是由程序自行分离。 Flask没有,它保持连接到您的控制台。
您的服务类型可能应为// add function
template<typename T>
T add(T a) {
return a;
}
template<typename T, typename... Args>
T add(T a, Args... args) {
return a + add(args...); // a + a + a + .. + add()
}
答案 1 :(得分:1)
设置更大的启动超时:
[Service]
TimeoutStartSec=300
以防您的服务实际上需要更多时间来完成启动。