mviewer / mviewerstudio

mviewer generator
GNU General Public License v3.0
15 stars 25 forks source link

MEG - VSR problèmes de redémarrage de service #246

Open lecault opened 1 year ago

lecault commented 1 year ago

J'ai des soucis pour redémarrer mon service. J'y arrive au bout d'un moment.

A spécifier...

Gaetanbrl commented 1 year ago

J'ai déjà parlé de ce problème rencontré avec gunicorn. De mon côté je constate qu'il ne démarre pas en raison de git qui est encore en train d'écrire.

Plusieurs restart permettent de démarrer le service prod.

C'est documenté ici :

https://github.com/jdev-org/mviewerstudio/blob/c852adce6d3b54ce3d4bda463c2639363b0ad981/docs/doc_tech/install_python.rst?plain=1#L272-L275

Gaetanbrl commented 1 year ago

Il manque peut être des options au script du service gunicorn pour un stop / restart propre. A voir selon la doc gunicorn (@spelhate si tu as une idée ?)

https://docs.gunicorn.org/en/latest/deploy.html

spelhate commented 1 year ago

Peut être qu'il faut stopper le process git avant de restart ?

spelhate commented 1 year ago

Sinon en adaptant le service avec ce type de paramétrage :

[Unit]
Description=Your Daemon Name
StartLimitIntervalSec=60
StartLimitBurst=5

[Service]
ExecStart=/path/to/executable
Restart=on-failure
RestartSec=10s

[Install]
WantedBy=multi-user.target
Gaetanbrl commented 1 year ago

On va regarder avec @pierrejego, merci pour les suggestions @spelhate

lecault commented 1 year ago

Alors suite à un redémarrage infructueux, j'ai l'erreur ci-dessous. En redémarrant plusieurs fois, ça passe.

Le log en question :

[2023-06-22 15:02:18 +0200] [18381] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "/mnt/ext/var/geobretagne/dev/mviewerstudio/srv/python/.venv/lib/python3.9/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
    worker.init_process()
  File "/mnt/ext/var/geobretagne/dev/mviewerstudio/srv/python/.venv/lib/python3.9/site-packages/gunicorn/workers/base.py", line 134, in init_process
    self.load_wsgi()
  File "/mnt/ext/var/geobretagne/dev/mviewerstudio/srv/python/.venv/lib/python3.9/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/mnt/ext/var/geobretagne/dev/mviewerstudio/srv/python/.venv/lib/python3.9/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/mnt/ext/var/geobretagne/dev/mviewerstudio/srv/python/.venv/lib/python3.9/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
    return self.load_wsgiapp()
  File "/mnt/ext/var/geobretagne/dev/mviewerstudio/srv/python/.venv/lib/python3.9/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/mnt/ext/var/geobretagne/dev/mviewerstudio/srv/python/.venv/lib/python3.9/site-packages/gunicorn/util.py", line 359, in import_app
    mod = importlib.import_module(module)
  File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/mnt/ext/var/geobretagne/dev/mviewerstudio/srv/python/mviewerstudio_backend/app.py", line 8, in <module>
    app.register.create_register_from_file_system()
  File "/mnt/ext/var/geobretagne/dev/mviewerstudio/srv/python/mviewerstudio_backend/utils/register_utils.py", line 61, in create_register_from_file_system
    self._configs_files_to_register()
  File "/mnt/ext/var/geobretagne/dev/mviewerstudio/srv/python/mviewerstudio_backend/utils/register_utils.py", line 98, in _configs_files_to_register
    self.update(config.as_dict())
  File "/mnt/ext/var/geobretagne/dev/mviewerstudio/srv/python/mviewerstudio_backend/utils/register_utils.py", line 151, in update
    self.delete(config_dict["id"])
  File "/mnt/ext/var/geobretagne/dev/mviewerstudio/srv/python/mviewerstudio_backend/utils/register_utils.py", line 160, in delete
    register_json = json.load(register_file)
  File "/usr/local/lib/python3.9/json/__init__.py", line 293, in load
    return loads(fp.read(),
  File "/usr/local/lib/python3.9/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/usr/local/lib/python3.9/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/local/lib/python3.9/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
lecault commented 1 year ago

Un retour d'expérience sur ce sujet. Sur la version installée sur GéoBretagne, je n'arrivais pas à redémarrer le service avec les données existantes (4,5 organismes avec plusieurs applications). Pour que ça marche :

ça semble fonctionner.