what im trying to do is to load different applications (webapp2.WSGIApplication) depending on the request domain.
for example http://www.domain_1.com should load the application in app1.main.application while http://www.domain_2.com should load app2.main.appplication.
of course im on the same GAE appid and im using namespaces to separate the apps data.
this works pretty good with ‘threadsafe:false’ and a runner.py file where a function determines which application to return
it seems that with ‘threadsafe:true’ the first request loads the wsgiapplication into the instance and further requests dont execute the ‘application dispatching’ logic any more so the request gets a response from the wrong app.
im using python2.7 and webapp2
what is the best way to do this?
edit:
a very simplified version of my runner.py
def main():
if domain == 'www.mydomain_1.com':
from app_1 import application
namespace = 'app_1'
elif domain == 'www.domain_2.com':
from app_2 import application
namespace = 'app_2'
namespace_manager.set_namespace(namespace)
return wsgiref.handlers.CGIHandler().run(application)
if __name__ == '__main__':
main()
and in app.yaml
- url: /.*
script: app-runner.py
made it happen by subclassing webapp2.WSGIApplication and overriding
__call__()which is called before dispatching to a RequestHandler.prefixing routes (and removing the prefix in the handlers initialize) and substructuring config to be able to use the instance memory.