2016-02-12 102 views
4

這裏的settings.pygunicorn無法啓動蟒蛇前夕

[email protected]:/var/www/eve-auth# cat settings.py 
DOMAIN = {'people': {}} 

而這裏的run.py

from eve import Eve 
app = Eve() 

if __name__ == '__main__': 
    app.run() 

它的工作原理,當我運行它獨立:

[email protected]:/var/www/eve-auth# python run.py 
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) 

但失敗當我通過gunicorn啓動時運行:

[email protected]:/var/www/eve-auth# gunicorn -b 0.0.0.0:5000 run:app 
[2016-02-12 02:07:22 +0000] [20] [INFO] Starting gunicorn 19.4.5 
[2016-02-12 02:07:22 +0000] [20] [INFO] Listening at: http://0.0.0.0:5000 (20) 
[2016-02-12 02:07:22 +0000] [20] [INFO] Using worker: sync 
[2016-02-12 02:07:22 +0000] [23] [INFO] Booting worker with pid: 23 
[2016-02-12 02:07:22 +0000] [23] [ERROR] Exception in worker process: 
Traceback (most recent call last): 
    File "/usr/local/lib/python3.5/site-packages/eve/flaskapp.py", line 246, in validate_domain_struct 
    domain = self.config['DOMAIN'] 
KeyError: 'DOMAIN' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "/usr/local/lib/python3.5/site-packages/gunicorn/arbiter.py", line 515, in spawn_worker 
    worker.init_process() 
    File "/usr/local/lib/python3.5/site-packages/gunicorn/workers/base.py", line 122, in init_process 
    self.load_wsgi() 
    File "/usr/local/lib/python3.5/site-packages/gunicorn/workers/base.py", line 130, in load_wsgi 
    self.wsgi = self.app.wsgi() 
    File "/usr/local/lib/python3.5/site-packages/gunicorn/app/base.py", line 67, in wsgi 
    self.callable = self.load() 
    File "/usr/local/lib/python3.5/site-packages/gunicorn/app/wsgiapp.py", line 65, in load 
    return self.load_wsgiapp() 
    File "/usr/local/lib/python3.5/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp 
    return util.import_app(self.app_uri) 
    File "/usr/local/lib/python3.5/site-packages/gunicorn/util.py", line 357, in import_app 
    __import__(module) 
    File "/var/www/eve-auth/run.py", line 2, in <module> 
    app = Eve() 
    File "/usr/local/lib/python3.5/site-packages/eve/flaskapp.py", line 135, in __init__ 
    self.validate_domain_struct() 
    File "/usr/local/lib/python3.5/site-packages/eve/flaskapp.py", line 248, in validate_domain_struct 
    raise ConfigException('DOMAIN dictionary missing or wrong.') 
eve.exceptions.ConfigException: DOMAIN dictionary missing or wrong. 
Traceback (most recent call last): 
    File "/usr/local/lib/python3.5/site-packages/eve/flaskapp.py", line 246, in validate_domain_struct 
    domain = self.config['DOMAIN'] 
KeyError: 'DOMAIN' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "/usr/local/lib/python3.5/site-packages/gunicorn/arbiter.py", line 515, in spawn_worker 
    worker.init_process() 
    File "/usr/local/lib/python3.5/site-packages/gunicorn/workers/base.py", line 122, in init_process 
    self.load_wsgi() 
    File "/usr/local/lib/python3.5/site-packages/gunicorn/workers/base.py", line 130, in load_wsgi 
    self.wsgi = self.app.wsgi() 
    File "/usr/local/lib/python3.5/site-packages/gunicorn/app/base.py", line 67, in wsgi 
    self.callable = self.load() 
    File "/usr/local/lib/python3.5/site-packages/gunicorn/app/wsgiapp.py", line 65, in load 
    return self.load_wsgiapp() 
    File "/usr/local/lib/python3.5/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp 
    return util.import_app(self.app_uri) 
    File "/usr/local/lib/python3.5/site-packages/gunicorn/util.py", line 357, in import_app 
    __import__(module) 
    File "/var/www/eve-auth/run.py", line 2, in <module> 
    app = Eve() 
    File "/usr/local/lib/python3.5/site-packages/eve/flaskapp.py", line 135, in __init__ 
    self.validate_domain_struct() 
    File "/usr/local/lib/python3.5/site-packages/eve/flaskapp.py", line 248, in validate_domain_struct 
    raise ConfigException('DOMAIN dictionary missing or wrong.') 
eve.exceptions.ConfigException: DOMAIN dictionary missing or wrong. 
[2016-02-12 02:07:22 +0000] [23] [INFO] Worker exiting (pid: 23) 
[2016-02-12 02:07:22 +0000] [20] [INFO] Shutting down: Master 
[2016-02-12 02:07:22 +0000] [20] [INFO] Reason: Worker failed to boot. 

我找不到關於gunicorn和python-eve的任何文檔......所以我不確定從哪裏挖掘。

回答

3

我從未在Gunicorn上跑過Eve。然而,Eve是一個Flask子類,與Flask一起工作的大多數東西也適用於Eve。

根據瓶documentation你Gunicorn運行瓶/夏娃這樣的:

gunicorn myproject:app 

希望這有助於。

0

的問題是,夏娃使用相對路徑來尋找settings.py,最快的解決方法是使用絕對路徑:

import os 
from eve import Eve 

app = Eve(__name__, settings=os.path.abspath('settings.py')) 

if __name__ == '__main__': 
    app.run()