4 ms·
I am pretty good at Django. But Django is really disappointing. I've switched back to PHP. These are the problems: 1. Django has a steep learning curve 2. Dja
by maxklein 16y ago
I am pretty good at Django. But Django is really disappointing. I've switched back to PHP. These are the problems:
1. Django has a steep learning curve
2. Django speeds up the start of the project, but afterwards development gets slow. Real slow.
3. Impossible to find django programmers that are not horribly expensive
4. The django app model makes code a mess. It's a horrible model and does not create reusable code.
5. Django is instable. I have to restart my server ever minute when running Django
6. If you use something like Pinax, the amount of memory django consumes is massive
7. Your site may run fine with normal traffic, but increase to about 100 a minute and the site starts giving bad gateway errors. Be CONSISTENT in your errors, django
8. The django people are slow. It has been years and django has barely changed
9. The templating scheme cannot be outsourced. You need a programmer to understand it
10. The nifty tricks they have to render your pages with shortcuts are very difficult to understand. Really difficult to understand
Django is not a nice framework. I believed in django for two years, but I've moved on. It's a good theoretical framework, but it's a terrible practical framework.
- acangiano 16y agoDo you use a framework with PHP?
- matclayton 16y agoMany sites, including us run django and cope with several 100's of requests per minute, without issue, I've never had django become unstable or a single gateway issue. How did you try and host django?
- maxklein 16y agoIt was a pretty low end server at webfaction. The point I'm making is that it should give me the same errors at low load that it gives at high load. But with django when you change your load, the errors change.
- starkfist 16y agoMost frameworks give inconsistent errors when they tip over under high load. Almost none have been designed with truly high traffic in mind.
- rbanffy 16y agoWhen something is malfunctioning, it's not very surprising when it malfunctions evenly and error reporting gets weird. You should monitor server behaviour and throttle traffic back when it's close to its limits. I usually see things on monitored servers (check memory allocation over time - how much cache, how much process, how much kernel, iowait time, swap for sharp increases) in time to issue corrective measures. Tuning maximum processes/threads on Apache seems one simple way to prevent that. Memcache and Varnish are also your friends with that - anything that prevents the workload from reaching Apache is.
- matclayton 16y agoWe have one of those as well, they arent suitable for any site where you are expecting 100's of queries per minute (unless you dont touch the db :)) the gateway error is probably a lack of django processes being made available to serve requests. This is probably nothing to do with the framework itself and is a hosting issue, try another provider, just my 2cents..
- dedward 16y agoExactly... It's common for epople to think that the framework covers every aspect of the technical architecture of the actual website/service itself - probably a natural assumption due to how the web evolved - Apache, static files, then some light scripting, then PHP. it doesn't - it's just an underlying framework. If you're expecting web-scale traffic - you have to engineer for it from the ground up - servers, content-delivery networks, design decisions, caching strategies and technologies.... yadda yadda yadda.... no framework is a magic pill that does it all - and if it were, it would quickly be outdated and inflexible.
- kgrin 16y ago
- mcav 16y agoI would say the opposite: it's a great practical framework, but not a theoretically good framework.
- andrewljohnson 16y agoI know you are a smart guy, but I totally disagree with almost everything you said: 1. Django has a steep learning curve -> Django has a learning curve for hard stuff, like context processors, complex queries, fixtures, etc., but if you just want to make a simple website fast, then Django is easy. Python is simple to understand, Django is extremely well-documented for beginners, and there is a lot of out-of-the-box functionality to work with, 2. Django speeds up the start of the project, but afterwards development gets slow. Real slow. -> I haven't found this to be the case. I have found that if you make poor design decisions at the beginning of a project, it will crawl to a halt regardless of the language or framework involved. 3. Impossible to find django programmers that are not horribly expensive -> Never tried, can't comment. 4. The django app model makes code a mess. It's a horrible model and does not create reusable code. -> There's a difference between reusable code and reusable apps, and Django apps lead to the latter. 5. Django is instable. I have to restart my server ever minute when running Django -> Not me... sounds like you don't use mem-caching. 6. If you use something like Pinax, the amount of memory django consumes is massive -> Can you benchmark this against a RoR or Joomla... I think this is unsubstantiated. 7. Your site may run fine with normal traffic, but increase to about 100 a minute and the site starts giving bad gateway errors. Be CONSISTENT in your errors, django -> mem-caching! 8. The django people are slow. It has been years and django has barely changed -> This is crazy. Django is being actively developed... 1.0, 1.1, 1.2 were all about a year apart and this involved massive improvements including stuff that personally mattered to me like geo-django being rolled into trunk. 9. The templating scheme cannot be outsourced. You need a programmer to understand it -> I have yet to find a good designer I could outsource any sort of HTML/CSS that didn't cost an arm and a leg. 10. The nifty tricks they have to render your pages with shortcuts are very difficult to understand. Really difficult to understand -> I don't understand what you mean here. Django is not a nice framework. I believed in django for two years, but I've moved on. It's a good theoretical framework, but it's a terrible practical framework. -> works on my box!
- bryanh 16y ago10. The nifty tricks they have to render your pages with shortcuts are very difficult to understand. Really difficult to understand -> I don't understand what you mean here. I tend to concur with your lack of understanding. Does he mean render_to_response? direct_to_template? I mean, jeez, their functionality is pretty much obvious in the naming.
- deleted 16y ago[deleted]
- andybak 16y ago1. Really? Compared to throwing a few pages out with PHP but on complex apps the time you save not reinventing the wheel would be the payback. 2. Hard to know what you were doing wrong without more info. 3. I've found excellent Django coders for less than $15 dollars/hour through freelancer sites. 4. The conventions around reusable code are growing up as the Django ecosystem grows up. There are good and bad examples but it's very possible to write reusable apps if you use the right architecture and separation of concerns. 5. Again. You are doing something wrong. 6. Django does use more memory than a simple mod_php setup and Pinax is a complex project but I'd like to see numbers once you compare apples to apples. ie. PHP+framework as a long running process matching Pinax for functionality. Would the memory requirements be that different? 7. Sounds like it's your server technology that's giving you those errors. You'd have to tell us what the underlying Python errors were for us to know whether Django was at fault or your setup. 8. You are not alone in thinking this but that is viewed as a feature for people trying to run stable sites. If you want to live on the bleeding edge then join the django-experimental branch that has opened recently on Github 9. Huh? Most people complain the Django template system is too simple and therefore limited. 10. I have no idea what you are trying to say here. You do sound slightly trollish. Give us a bit more info to go on and we can have a constructive debate.
- yesimahuman 16y ago> 1. Django has a steep learning curve Everything has a steep learning curve once the framework has been integrated into an actual product. You could say the same about having to learn a new PHP deployment, or a Java servlets based product.
- rbanffy 16y ago> 1. Django has a steep learning curve That pretty much negates your intro. If it's too hard for you, then, maybe, you are not good at it. > 2. Django speeds up the start of the project, but afterwards development gets slow. Real slow. Django apps maintain elegance and consistency for far more development iterations than anything else I have used before. That's the opposite of what I experience. > 3. Impossible to find django programmers that are not horribly expensive It's also impossible to find bad Django programmers > 4. The django app model makes code a mess. It's a horrible model and does not create reusable code. What are you talking about? Even the built-in admin app is a pluggable application. Unless you are careless, everything is modular > 5. Django is instable. I have to restart my server ever minute when running Django I have been pounding (100 simultaneous connections, 800 requests/second) a server that will enter production next week for 18 hours straight now. It shows no sign of stress. Maybe you should fire your sysadmin. > 6. If you use something like Pinax, the amount of memory django consumes is massive Memory is relatively cheap. Memcache and MySQL consume most of the server memory on the above scenario. > 7. Your site may run fine with normal traffic, but increase to about 100 a minute and the site starts giving bad gateway errors. Be CONSISTENT in your errors, django Like I said above, I am running 800 requests per second out of a two-server front-end + 1 backend for 18 hours with no error and no slowdown. You should monitor your machine carefully to identify problems. Maybe you are running too many HTTP listeners, maybe you are using mod_python instead of mod_wsgi. I won't troubleshoot your server for you. > 8. The django people are slow. It has been years and django has barely changed We call it consistency > 9. The templating scheme cannot be outsourced. You need a programmer to understand it Apart from ZPT, I never saw a template a designer couldn't mangle. And some did mangle ZPT templates badly. > 10. The nifty tricks they have to render your pages with shortcuts are very difficult to understand. Really difficult to understand Again, I think the problem is not on the tool side.
- idan 16y ago1. "The Framework for Perfectionists with Deadlines", not "The Framework for Non-Programmers Who Don't Know How Pick Up A Framework" 2. What? 3. Good talent is generally not free. Turns out that right now, a lot of good talent happens to like Django. Perhaps this indicates something, hm? 4. As opposed to writing raw SQL for different RDBMS's? 5. What? 6. If you use something large like Photoshop, the amount of memory it consumes is large, too. Pinax is a large collection of apps. Turn off the parts you don't need! 7. What? Setting up sites to handle 1k reqs/second is trivial with a little bit of caching. 8. Perhaps you should read release notes then, hm? 9. Welcome to Django -- don't use the parts you don't like. People have successfully used Jinja with Django to good effect. But your claim of the template language being hard for designers to understand is bullshit. The most advanced logic they have to deal with is if/else, and even that got easy in 1.2 with the smart-if tag. 10. See point 1. You might not like Django for a lot of valid reasons -- but all of these weren't.
- mkramlich 16y agoI hope that's a troll.