簡體   English   中英

使用uWSGI的Django的SECRET_KEY錯誤

[英]SECRET_KEY error with Django using uWSGI

我正在嘗試使用uWSGI運行Python 3 Django應用程序,並且遇到了麻煩。

我將uWSGI作為守護程序運行:

$ sudo service uwsgi start

我正在使用如下文件:[uwsgi]

chdir = /home/ubuntu/my_app
module = my_app.wsgi
# path below is to virtual environment
home = /home/ubuntu/my_app/env 
http = :8000
check-static = /var/www/my_app
daemonize = /var/log/uwsgi/my_app

# process-related settings
master = true
processes = 10
vacuum = true

我收到以下令人費解的錯誤:

mapped 800360 bytes (781 KB) for 10 cores
*** Operational MODE: preforking ***
Traceback (most recent call last):
  File "./titlematch_api/wsgi.py", line 14, in <module>
    application = get_wsgi_application()
  File "/home/ubuntu/titlematch_api/env/lib/python3.4/site-packages/django/core/wsgi.py", line 14, in get_wsgi_application
    django.setup()
  File "/home/ubuntu/titlematch_api/env/lib/python3.4/site-packages/django/__init__.py", line 17, in setup
    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
  File "/home/ubuntu/titlematch_api/env/lib/python3.4/site-packages/django/conf/__init__.py", line 48, in __getattr__
    self._setup(name)
  File "/home/ubuntu/titlematch_api/env/lib/python3.4/site-packages/django/conf/__init__.py", line 44, in _setup
    self._wrapped = Settings(settings_module)
  File "/home/ubuntu/titlematch_api/env/lib/python3.4/site-packages/django/conf/__init__.py", line 92, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/lib/python3.4/importlib/__init__.py", line 109, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "./titlematch_api/settings.py", line 20, in <module>
    SECRET_KEY = os.environ['SECRET_KEY']
  File "/usr/lib/python3.4/os.py", line 631, in __getitem__
    raise KeyError(key) from None
KeyError: 'SECRET_KEY'

我已經為當前用戶和root用戶設置了SECRET_KEY環境變量,並且可以在python shell中成功執行os.environ['SECRET_KEY']

您無法真正做到這一點,因為您的環境是在uwsgi無法訪問的本地〜/ .bashrc中設置的。

您也許可以將變量放在/etc/rc.local但是我什至不確定它是否可以工作

您可以將它們添加到您的文件中

[uwsgi]
chdir = /home/ubuntu/my_app
module = my_app.wsgi
# path below is to virtual environment
home = /home/ubuntu/my_app/env 
http = :8000
check-static = /var/www/my_app
daemonize = /var/log/uwsgi/my_app

# process-related settings
master = true
processes = 10
vacuum = true

#environment
env=SECRET_KEY="My Super Secret Key"

或者您可以直接在python文件中的app對象上配置它

app = Flask(__name__)
app.secret_key="My Super Secret Key"

坦率地說,這可能是我會這樣做的方式

在您的uwsgi ini配置中: env = SECRETKEY=$(SECRETKEY) ^^^這將指示uwsgi使用SECRETKEY env var並確保在它創建的分叉進程中對其進行了設置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM