gunicorn: Worker failed to boot.

 

Photo by John Schnobrich on Unsplash

gunicorn을 bind 옵션만 지정해서 실행하면 에러가 발생했을 때 원인을 찾기가 어렵다.

1
2
3
4
5
6
7
8
(venvpluto) devr@pluton:/works/venvpluto$ gunicorn bind 0:5000 “webapp:create_app()”
[20220206 08:35:07 +0900] [1270] [INFO] Starting gunicorn 20.1.0
[20220206 08:35:07 +0900] [1270] [INFO] Listening at: http://0.0.0.0:5000 (1270)
[20220206 08:35:07 +0900] [1270] [INFO] Using worker: sync
[20220206 08:35:07 +0900] [1272] [INFO] Booting worker with pid: 1272
[20220206 08:35:08 +0900] [1270] [INFO] Shutting down: Master
[20220206 08:35:08 +0900] [1270] [INFO] Reason: Worker failed to boot.
(venvpluto) devr@pluton:/works/venvpluto$
cs

이런 경우 preload 옵션을 추가로 지정하면 애플리케이션 코드에서 발생한 오류를 확인할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
(venvpluto) devr@pluton:/works/venvpluto$ gunicorn preload bind 0:5000 “webapp:create_app()”
Traceback (most recent call last):
  File “/works/venvpluto/venv/venvpluto/bin/gunicorn”, line 8, in <module>
    sys.exit(run())
  File “/works/venvpluto/venv/venvpluto/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py”, line 67, in run
    WSGIApplication(“%(prog)s [OPTIONS] [APP_MODULE]”).run()
  File “/works/venvpluto/venv/venvpluto/lib/python3.8/site-packages/gunicorn/app/base.py”, line 231, in run
    super().run()
  File “/works/venvpluto/venv/venvpluto/lib/python3.8/site-packages/gunicorn/app/base.py”, line 72, in run
    Arbiter(self).run()
  File “/works/venvpluto/venv/venvpluto/lib/python3.8/site-packages/gunicorn/arbiter.py”, line 58, in __init__
    self.setup(app)
  File “/works/venvpluto/venv/venvpluto/lib/python3.8/site-packages/gunicorn/arbiter.py”, line 118, in setup
    self.app.wsgi()
  File “/works/venvpluto/venv/venvpluto/lib/python3.8/site-packages/gunicorn/app/base.py”, line 67, in wsgi
    self.callable = self.load()
  File “/works/venvpluto/venv/venvpluto/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py”, line 58, in load
    return self.load_wsgiapp()
  File “/works/venvpluto/venv/venvpluto/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py”, line 48, in load_wsgiapp
    return util.import_app(self.app_uri)
  File “/works/venvpluto/venv/venvpluto/lib/python3.8/site-packages/gunicorn/util.py”, line 412, in import_app
    app = app(*args, **kwargs)
  File “/works/venvpluto/webapp/__init__.py”, line 13, in create_app
    from webapp.views import file_views
  File “/works/venvpluto/webapp/views/file_views.py”, line 6, in <module>
    from dateutil.relativedelta import relativedelta
ModuleNotFoundError: No module named ‘dateutil’
(venvpluto) devr@pluton:/works/venvpluto$
cs

참고로 preload 옵션에 대한 설명은 아래와 같다.

1
preload             Load application code before the worker processes are forked. [False]
cs

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤