Should Django be used for large, complex sites?

I've recently used Django for a very small CMS-style website. I was so impressed with how quick and easy it was to develop a Django project, that I'm now considering using it for a significantly larger project.

However, before I get excited about the idea, I just wanted to run it by someone who actually has developed a very large Django website (with many features, and high traffic).

Baring in mind that recently I have used mostly C# Asp.Net - Are there any pitfalls I should know about?


ANSWERS:


I found this quite interesting to read:

There are a lot of interesting articles in this blog, but, unfortunately, they're all in Russian.

Added: And since that post Ivan did write MySQL backend supporting master-slave replication:


It's going to depend a lot on exactly what you mean by "large" and "complex".

As far as "complex", take a look at Pinax. Tons of features all built out of simple Django apps hooked together and it's still considered a framework that you would use as a start towards building a social software site. But I'm sure you can still come up with some version of "complex" that doesn't mesh well with Django's architecture.

Handling large amounts of traffic and large datasets is a different matter. Ultimately, if you get large enough, Django's not going to handle it. But really, neither will any framework. Jacob-Kaplan Moss (one of the django devs) has a great article outlining the history of web development that led up to where Django is. He makes a pretty strong case for why Django or any other framework can't excel at both rapid development and massive scalability but why it's still worth starting with one. Basically, no two high traffic sites are going to have the same scalability issues: they will all need a custom approach that's specific to the exact type of data and traffic they have to deal with. But since it's hard to predict exactly where those bottlenecks are going to be, it's a good idea to start with a rapid development framework and start replacing components when you encounter the need.


As mentioned, it really depends on what "large" and "complex" actually mean. If you're planning on building another eBay, the answer is "probably not".

This question is asked a lot. Frankly, there are plenty of answers out there. This thread is pretty good. There was also a very well attended presentation at DjangoCon this year on Scaling Django. It's up to you to architect your site so that it scales, regardless of what technology you use.

My answer would be: If your site is going to outgrow Django (or any other framework, for that matter), it's huge success and you'll probably have enough capital to hire a gigantic team to rewrite the entire thing.



 MORE:


 ? Is it safe to share md5(cookie, some_string) with a third party service?
 ? Finding out your website visitor IP address in Java
 ? Brazilian portuguese website to support russian, mandarin and japanese
 ? Are there any website comments systems available (like phpbb for forums)?
 ? Git workflow for web development
 ? DotNetNuke 5 - Are there any best practices for migrating existing aspx-based website into DotNetNuke
 ? What's quicker: serving a static HTML file from the filesystem or from MemCache?
 ? Link checking a password protected website
 ? How to localise a static website?
 ? Advice needed for monitoring a website