Я пытаюсь запустить приложение flask, которое использует октаву и пакет python oct2py для связи с Octave. Я устанавливаю python venv и запускаю приложение.
Простое flask приложение, похоже, работает нормально, поскольку оно принимает запросы на публикацию и отвечает на них. Когда я пытаюсь добавить функцию октавы, приложение работает нормально. С прямым связыванием «пулемет» приложение тоже работает нормально.
Проблема начинается, когда я пытаюсь создать файл модуля systemd service
, а код запускается в октаве.
Я создал такую службу, как /etc/systemd/system/my_project.service
, и ее содержимое показано ниже.
[Unit]
Description=Gunicorn instance to serve flask app
After=network.target
[Service]
User=some_user
Group=www-data
WorkingDirectory=/home/some_user/project_dir
Environment="PATH=/home/some_user/project_dir/venv/bin"
ExecStart=/home/some_user/project_dir/venv/bin/gunicorn --workers 3 --bind unix:project_dir.sock -m 007 wsgi:app
[Install]
WantedBy=multi-user.target
После просмотра статуса выдается ошибка, например
Журнал ошибок
После перезапуска службы выдает
gunicorn[1690]: self.restart()
gunicorn[1690]: File "/home/some_user/project_dir/venv/lib/python3.8/site-packages/oc>
gunicorn[1690]: self._engine = OctaveEngine(stdin_handler=self._handle_stdin,
gunicorn[1690]: File "/home/some_user/project_dir/venv/lib/python3.8/site-packages/oc>
gunicorn[1690]: self.executable = self._get_executable()
gunicorn[1690]: File "/home/some_user/project_dir/venv/lib/python3.8/site-packages/oc>
gunicorn[1690]: raise OSError('octave-cli not found, please see README')
gunicorn[1690]: OSError: octave-cli not found, please see README
systemd[1]: my_project.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: my_project.service: Failed with result 'exit-code'.
Я искал во многих местах ошибку, но не смог ее устранить, например здесь здесь
И для октавы я попытался запустить octave и octave-cli с терминала с активным venv и без него, и он открывает октаву, поэтому я не могу определить точную причину.
Если я напрямую запустите команду на терминале, приложение запускается без ошибок.
gunicorn --bind 127.1.0.1:5000 wsgi:app
Файл wsgi.py выглядит так
from my_project import app
if __name__ == "__main__":
app.run()
Есть предложения, как решить эту проблему?