Sunday, May 28, 2017

Re: Multiple uwsgi apps in one project

On Friday 26 May 2017 04:22:49 marcin.j.nowak@gmail.com wrote:

> I think that my reqs are pretty straightforward.

> I'd like to setup project environment with 3 different apps:

>

> 1. main app (public)

> 2. admin app (vpn)

> 3. local network app for api talking with other services in the

> datacenter

>

> The whole thing is about preserving same project environment.

> Models, registries, configuration should stay same.

> Middlewares, urls, views and anything related to http will be

> different.

 

Use Mezzanine's approach (modified a bit by me) in settings.py near bottom:

PROJECT_APP_PATH = os.path.dirname(os.path.abspath(__file__))
PROJECT_APP = os.path.basename(PROJECT_APP_PATH)

local_module = os.getenv("LOCAL_SETTINGS_MODULE", "local_settings.py")
f = os.path.join(PROJECT_APP_PATH, local_module)

if os.path.exists(f):
import sys
import imp

module_name
= "{}.{}".format(PROJECT_APP, local_module[0:-3])
module = imp.new_module(module_name)
module.__file__ = f
sys.modules
[module_name] = module
exec(open(f, "rb").read())
else:
print("WARNING: no such local module: {}: File does not exist".format(f))

Now your repo can have public_settings.py, admin_settings.py etc, and use env in uwsgi configuration to select the correct one. The main settings.py contains shared settings. All the rest in the local variants.

--

Melvyn Sopacua

No comments:

Post a Comment