【发布时间】:2020-11-15 17:19:36
【问题描述】:
我很感兴趣将 nginx 和 gunicorn 放在以下 Django Web 应用程序 (https://github.com/fiduswriter/fiduswriter) 的前面。这个网络 abd 使用通常的 python manage.py runserver 命令运行良好,但对于 gunicorn,我需要有 wsgi.py 文件,我在任何地方都找不到。
插入代码时
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'fiduswriter.settings')
application = get_wsgi_application()
进入 fiduswriter/base/wsgi.py 并以 gunicorn base.wsgi运行 gunicorn@我收到以下错误
```我很感兴趣将 nginx 和 gunicorn 放在以下 Django Web 应用程序 (https://github.com/fiduswriter/fiduswriter) 的前面。这个 web abd 使用通常的 python manage.py runserver 命令运行良好,但对于 gunicorn,我需要有 wsgi.py 文件,我在任何地方都找不到。
插入代码时
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'fiduswriter.settings')
application = get_wsgi_application()
以 fiduswriter/base/wsgi.py 身份运行 gunicorn 为 gunicorn base.wsgi我收到以下错误
[2020-07-26 14:36:16 +0200] [86714] [INFO] Listening at: http://127.0.0.1:8000 (86714)
[2020-07-26 14:36:16 +0200] [86714] [INFO] Using worker: sync
[2020-07-26 14:36:16 +0200] [86716] [INFO] Booting worker with pid: 86716
[2020-07-26 14:36:16 +0200] [86716] [ERROR] Exception in worker process
Traceback (most recent call last):
File "/home/user/anaconda3/envs/fiduswriter/lib/python3.8/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
worker.init_process()
File "/home/user/anaconda3/envs/fiduswriter/lib/python3.8/site-packages/gunicorn/workers/base.py", line 119, in init_process
self.load_wsgi()
File "/home/user/anaconda3/envs/fiduswriter/lib/python3.8/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi
self.wsgi = self.app.wsgi()
File "/home/user/anaconda3/envs/fiduswriter/lib/python3.8/site-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/home/user/anaconda3/envs/fiduswriter/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 49, in load
return self.load_wsgiapp()
File "/home/user/anaconda3/envs/fiduswriter/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp
return util.import_app(self.app_uri)
File "/home/user/anaconda3/envs/fiduswriter/lib/python3.8/site-packages/gunicorn/util.py", line 358, in import_app
mod = importlib.import_module(module)
File "/home/user/anaconda3/envs/fiduswriter/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 783, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/home/user/Dokumente/TextPrediction/fiduswriter/fiduswriter/base/wsgi.py", line 16, in <module>
application = get_wsgi_application()
File "/home/user/anaconda3/envs/fiduswriter/lib/python3.8/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
django.setup(set_prefix=False)
File "/home/user/anaconda3/envs/fiduswriter/lib/python3.8/site-packages/django/__init__.py", line 19, in setup
configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
File "/home/user/anaconda3/envs/fiduswriter/lib/python3.8/site-packages/django/conf/__init__.py", line 79, in __getattr__
self._setup(name)
File "/home/user/anaconda3/envs/fiduswriter/lib/python3.8/site-packages/django/conf/__init__.py", line 66, in _setup
self._wrapped = Settings(settings_module)
File "/home/user/anaconda3/envs/fiduswriter/lib/python3.8/site-packages/django/conf/__init__.py", line 157, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/home/user/anaconda3/envs/fiduswriter/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 961, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'fiduswriter'
[2020-07-26 14:36:16 +0200] [86716] [INFO] Worker exiting (pid: 86716)
[2020-07-26 14:36:16 +0200] [86714] [INFO] Shutting down: Master
[2020-07-26 14:36:16 +0200] [86714] [INFO] Reason: Worker failed to boot.
因此,我问自己是否有任何方法可以绕过这个问题,以便在这里使用 gunicorn。
【问题讨论】:
-
绕过什么“问题”?文件存在于
<project_name>/wsgi.py -
很抱歉,我在前面提到的 Django web appb repo 中找不到它。这就是为什么我要问如何使这个网络应用程序与 gunicorn 一起工作。
标签: python django web-applications gunicorn production