2010-10-12 9 views
0

J'essaie de comprendre comment changer le routage des URL en fonction de l'espace de nomsdans appengine comment puis-je avoir le routage d'URL basé sur l'espace de noms?

Dire que j'ai myapp.x.com/apage et myapp.y.com/apage, j'ai essayé le code ci-dessous mais il n » travail t parce que je suppose que le main.py est mis en mémoire cache

ns = namespace_manager.google_apps_namespace() 
if ns == 'x.com' 
    app = WSGIApplication([ 
     (r'/apage', 'my.module.XHandler'), 
    ]) 
else: 
    app = WSGIApplication([ 
     (r'/apage', 'my.module.YHandler'), 
    ]) 

est-il une autre façon de le faire en dehors bien sûr tourner chaque gestionnaire dans un routeur url?

Répondre

1

Vous devez écrire votre propre logiciel intermédiaire qui achemine vers différentes applications basées sur le domaine. Voir DomainMiddleware dans this blog post pour un exemple.

+0

Merci, en fait, après avoir vu la façon dont vous l'avez fait et en réalisant que c'était possible, j'ai déplacé le code de routage dans le corps de la fonction main() et cela fonctionne. Je suppose qu'appengine ne met pas en cache main.py mais met en cache la fonction main() entre les requêtes. – molicule

+0

App Engine conserve les modules chargés chargés entre les demandes. Il ne ré-exécute pas le corps du module si votre module a une fonction main() - à la place, il exécute simplement main(). Je recommanderais plutôt d'écrire un middleware, c'est plus polyvalent et moins kludgy. –