Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am trying to run a large amount of sites which share about 90% of their code. They are simply designed to query an API and return the results. They will have a common userbase / database but will be configured slightly different and will have different CSS (perhaps even different templating).

My initial idea was to run them as separate applications with a common library but I have read about the sites framework which would allow them to run from a single instance of Django which may help to reduce memory usage.

https://docs.djangoproject.com/en/dev/ref/contrib/sites/

Is the site framework the right approach to a problem like this, and does it have real benefits over running separate applications?


Initially I thought it was, but now I think otherwise. I have heard the following:

Your SITE_ID is set in settings.py, so in order to have multiple sites, you need multiple settings.py configurations, which means multiple distinct processes/instances. You can of course share the code base between them, but each site will need a dedicated worker / WSGIDaemon to serve the site.

This effectively removes any benefit of running multiple sites under one hood, if each site needs a UWSGI instance running.

Alternative ideas of systems:

I don't know what route to be taking with this.

share|improve this question
 
what is your question? –  gnat Sep 17 '13 at 11:45
 
It's the third paragraph, I want to know from a programming perspective if this a good way of approaching this problem in python –  Jimmy Sep 17 '13 at 12:34
2  
When the question isn't in a prominent place (start of the post or end), it can be useful to call it out by bolding it to make it easier to see. –  MichaelT Sep 17 '13 at 19:22
 
This is a difficult one to evaluate. You need metrics and results to prove one method is better over the other (which most people won't have). If you're going the API way, then it will probably make sense to maintain each one as a separate instance, for benefiting the developer who may need to make distinct changes on each. –  Joe Nov 19 '13 at 19:11
add comment

Know someone who can answer? Share a link to this question via email, Google+, Twitter, or Facebook.

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.