[Sat Apr 09 18:27:29.953008 2016] [:error] [pid 3230:tid 140635784853248] [client 103.14.196.22:53950] mod_wsgi (pid=3230): Target WSGI script '/var/www/FlaskApps/FlaskApps.wsgi' cannot be loaded as Python module.
[Sat Apr 09 18:27:29.953045 2016] [:error] [pid 3230:tid 140635784853248] [client 103.14.196.22:53950] mod_wsgi (pid=3230): Exception occurred processing WSGI script '/var/www/FlaskApps/FlaskApps.wsgi'.
[Sat Apr 09 18:27:29.953065 2016] [:error] [pid 3230:tid 140635784853248] [client 103.14.196.22:53950] Traceback (most recent call last):
[Sat Apr 09 18:27:29.953079 2016] [:error] [pid 3230:tid 140635784853248] [client 103.14.196.22:53950] File "/var/www/FlaskApps/FlaskApps.wsgi", line 8, in
[Sat Apr 09 18:27:29.953126 2016] [:error] [pid 3230:tid 140635784853248] [client 103.14.196.22:53950] from run import app as application
[Sat Apr 09 18:27:29.953136 2016] [:error] [pid 3230:tid 140635784853248] [client 103.14.196.22:53950] File "/var/www/FlaskApps/PlagiarismDefenderApp/run.py", line 28, in
[Sat Apr 09 18:27:29.953165 2016] [:error] [pid 3230:tid 140635784853248] [client 103.14.196.22:53950] app = Eve()
[Sat Apr 09 18:27:29.953173 2016] [:error] [pid 3230:tid 140635784853248] [client 103.14.196.22:53950] File "/usr/local/lib/python2.7/dist-packages/eve/flaskapp.py", line 139, in init
[Sat Apr 09 18:27:29.953371 2016] [:error] [pid 3230:tid 140635784853248] [client 103.14.196.22:53950] self.validate_domain_struct()
[Sat Apr 09 18:27:29.953382 2016] [:error] [pid 3230:tid 140635784853248] [client 103.14.196.22:53950] File "/usr/local/lib/python2.7/dist-packages/eve/flaskapp.py", line 252, in validate_domain_struct
[Sat Apr 09 18:27:29.953395 2016] [:error] [pid 3230:tid 140635784853248] [client 103.14.196.22:53950] raise ConfigException('DOMAIN dictionary missing or wrong.')
[Sat Apr 09 18:27:29.953408 2016] [:error] [pid 3230:tid 140635784853248] [client 103.14.196.22:53950] ConfigException: DOMAIN dictionary missing or wrong.
home.py file
# -*- coding: utf-8 -*-
import os
from eve import Eve
if 'PORT' in os.environ:
port = int(os.environ.get('PORT'))
host = '0.0.0.0'
else:
port = 5000
host = '127.0.0.1'
app = Eve()
if __name__ == '__main__':
app.run(host=host, port=port)
settins.py file
import os
MONGO_HOST = os.environ.get('MONGO_HOST', 'localhost')
MONGO_PORT = os.environ.get('MONGO_PORT', 27017)
MONGO_USERNAME = os.environ.get('MONGO_USERNAME', 'user')
MONGO_PASSWORD = os.environ.get('MONGO_PASSWORD', 'user')
MONGO_DBNAME = os.environ.get('MONGO_DBNAME', 'evedemo')
RESOURCE_METHODS = ['GET', 'POST', 'DELETE']
ITEM_METHODS = ['GET', 'PATCH', 'DELETE']
CACHE_CONTROL = 'max-age=20'
CACHE_EXPIRES = 20
people = {
# 'title' tag used in item links.
'item_title': 'person',
'additional_lookup': {
'url': 'regex("[\w]+")',
'field': 'lastname'
},
'schema': {
'firstname': {
'type': 'string',
'minlength': 1,
'maxlength': 10,
},
'lastname': {
'type': 'string',
'minlength': 1,
'maxlength': 15,
'required': True,
},
'role': {
'type': 'list',
'allowed': ["author", "contributor", "copy"],
},
# An embedded 'strongly-typed' dictionary.
'location': {
'type': 'dict',
'schema': {
'address': {'type': 'string'},
'city': {'type': 'string'}
},
},
'born': {
'type': 'datetime',
},
}
}
works = {
'cache_control': 'max-age=10,must-revalidate',
'cache_expires': 10,
'schema': {
'title': {
'type': 'string',
'required': True,
},
'description': {
'type': 'string',
},
'owner': {
'type': 'objectid',
'required': True,
'data_relation': {
'resource': 'people',
'embeddable': True
},
},
}
}
DOMAIN = {
'people': people,
'works': works,
}
/var/www/FlaskApps/FlaskApps.wsgi
#! /usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/FlaskApps/PlagiarismDefenderApp/")
# home points to the home.py file
from home import app as application
application.secret_key = "somesecretsessionkey"
Check the
settings
path that the Eve app is using. Check if it matches yoursettings.py
. This error can be raised if you point the app to a wrong settings.py path.Also, I guess it's a typo but you wrote
settins.py
. If that is correct, there's your problem. You need to have asettings.py
on the same folder as the application, or you need to pass thesettings
path to the app.See the Eve docs here for a detailed explanation of configuration with files.
The error
ConfigException: DOMAIN dictionary missing or wrong.
is very misleading. When I run into such errors, I debug thevalidate_domain_struct
in flaskapp.py, by stepping thru it line by line. This has always helped me find the root cause.Which version of eve are you using ? https://github.com/nicolaiarocci/eve/issues/823 says it is fixed in eve 0.6+