After upgrading from django 1.9.6 to 1.11.11, running crossbar 17.10.1 with the following guest worker configuration fails due to not finding the DJANGO_SETTINGS_MODULE ("simpl_calc_model.settings").
{
"type": "guest",
"executable": "django-admin",
"arguments": ["run_guest"],
"options": {
"workdir": "..",
"env": {
"vars": {
"HOSTNAME": "localhost",
"PORT": "8080"
}
}
}
}
I'm running crossbar against this config from a management command in the project containing the simpl_calc_model directory. I can run the guest worker directly in this project like so:
./manage.py run_guest --settings=simpl_calc_model.settings
How to I ensure django-admin 1.11.11 can find the settings module when called from crossbar via my management command?
The error log looks like:
Traceback (most recent call last):
File " ~/.virtualenvs/simpl-calc-model/bin/django-admin", line 11, in <module>
sys.exit(execute_from_command_line())
File " ~/.virtualenvs/simpl-calc-model/lib/python3.6/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
utility.execute()
File " ~/.virtualenvs/simpl-calc-model/lib/python3.6/site-packages/django/core/management/__init__.py", line 308, in execute
settings.INSTALLED_APPS
File " ~/.virtualenvs/simpl-calc-model/lib/python3.6/site-packages/django/conf/__init__.py", line 56, in __getattr__
self._setup(name)
File " ~/.virtualenvs/simpl-calc-model/lib/python3.6/site-packages/django/conf/__init__.py", line 41, in _setup
self._wrapped = Settings(settings_module)
File " ~/.virtualenvs/simpl-calc-model/lib/python3.6/site-packages/django/conf/__init__.py", line 110, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File " ~/.virtualenvs/simpl-calc-model/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 941, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'simpl_calc_model'
Fixed problem by implementing Alasdair's suggestion and removing workdir:
{
"type": "guest",
"executable": "manage.py",
"arguments": ["run_guest"],
"options": {
"env": {
"vars": {
"HOSTNAME": "localhost",
"PORT": "8080"
}
}
}
}