当从新贵跑来的没有环境变量时,Gunicorn+Django不起作用

2024-10-03 23:30:58 发布

您现在位置:Python中文网/ 问答频道 /正文

  • 我正在digitalocean的vps上运行Ubuntu14.04
  • 我已经安装了virtualenvvirtualenvwrapper
  • 我有一个运行在python3上的虚拟环境,名为ssenv,位于:/home/david/Env/ssenv/

如果我走进管理.py找到并运行文件:

gunicorn --workers 3 --bind unix:/home/david/StockSearch/stocksearch/stocksearch.sock stocksearch.wsgi:application

一切正常。 但是如果我试着用下面的方法古尼康.confupstart文件:

^{pr2}$

然后运行:sudo service gunicorn start

我检查了错误日志,看到了这样的混乱:

[2015-10-07 07:01:22 -0400] [8882] [INFO] Starting gunicorn 19.3.0
[2015-10-07 07:01:22 -0400] [8882] [INFO] Listening at: unix:/home/david/StockSearch/stocksearch/stocksearch.sock (8882)
[2015-10-07 07:01:22 -0400] [8882] [INFO] Using worker: sync
[2015-10-07 07:01:22 -0400] [8886] [INFO] Booting worker with pid: 8886
[2015-10-07 07:01:22 -0400] [8887] [INFO] Booting worker with pid: 8887
[2015-10-07 07:01:22 -0400] [8888] [INFO] Booting worker with pid: 8888
(ssenv)david@stockmeup:~/StockSearch/stocksearch$ sudo tail -30 /var/log/upstart/gunicorn.log 
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/gunicorn/arbiter.py", line 459, in reap_workers
    raise HaltServer(reason, self.WORKER_BOOT_ERROR)
gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/david/Env/ssenv/bin/gunicorn", line 11, in <module>
    sys.exit(run())
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/gunicorn/app/wsgiapp.py", line 74, in run
    WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/gunicorn/app/base.py", line 189, in run
    super(Application, self).run()
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/gunicorn/app/base.py", line 72, in run
    Arbiter(self).run()
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/gunicorn/arbiter.py", line 201, in run
    self.halt(reason=inst.reason, exit_status=inst.exit_status)
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/gunicorn/arbiter.py", line 297, in halt
    self.stop()
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/gunicorn/arbiter.py", line 342, in stop
    time.sleep(0.1)
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/gunicorn/arbiter.py", line 214, in handle_chld
    self.reap_workers()
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/gunicorn/arbiter.py", line 459, in reap_workers
    raise HaltServer(reason, self.WORKER_BOOT_ERROR)
gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
[2015-10-07 07:01:24 -0400] [8904] [INFO] Starting gunicorn 19.3.0
[2015-10-07 07:01:24 -0400] [8904] [INFO] Listening at: unix:/home/david/StockSearch/stocksearch/stocksearch.sock (8904)
[2015-10-07 07:01:24 -0400] [8904] [INFO] Using worker: sync
[2015-10-07 07:01:24 -0400] [8908] [INFO] Booting worker with pid: 8908
(ssenv)david@stockmeup:~/StockSearch/stocksearch$ sudo tail -30 /var/log/upstart/gunicorn.log 
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/django/conf/__init__.py", line 113, in __init__
    raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
Traceback (most recent call last):
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/gunicorn/arbiter.py", line 507, in spawn_worker
    worker.init_process()
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/gunicorn/workers/base.py", line 118, in init_process
    self.wsgi = self.app.wsgi()
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
    return self.load_wsgiapp()
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/gunicorn/util.py", line 355, in import_app
    __import__(module)
  File "/home/david/StockSearch/stocksearch/stocksearch/wsgi.py", line 16, in <module>
    application = get_wsgi_application()
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/django/core/wsgi.py", line 14, in get_wsgi_application
    django.setup()
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/django/__init__.py", line 17, in setup
    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/django/conf/__init__.py", line 48, in __getattr__
    self._setup(name)
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/django/conf/__init__.py", line 44, in _setup
    self._wrapped = Settings(settings_module)
  File "/home/david/Env/ssenv/lib/python3.4/site-packages/django/conf/__init__.py", line 113, in __init__
    raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
[2015-10-07 07:01:28 -0400] [8960] [INFO] Worker exiting (pid: 8960)

所以从根本上说,它会引起{} 在此期间,它再次引发了这个例外

再次启动,并引发一个Django配置不正确的错误,即使我已经设置了设置.py是这样的:

SECRET_KEY = os.environ['SECRET_KEY']

并在激活后文件中设置环境变量:

export DJANGO_SETTINGS_MODULE='stocksearch.settings.production'
export SECRET_KEY='obscured sensitive info'

Tags: inpyselfinfoenvhomelibpackages
1条回答
网友
1楼 · 发布于 2024-10-03 23:30:58

post_activate与这里的任何事情都没有关系。您应该将它们放入您的upstart配置中:

env DJANGO_SETTINGS_MODULE='stocksearch.settings.production'

或者在wsgi文件本身中:

^{pr2}$

相关问题 更多 >