Hey guys I've decided to knock TG on the head for a while and pick up the pace on PHP a bit, driving more into PHP5 with some of my Python lessons. I don't have a problem with Python by the way, just not for web development. Anyway I thought you might be interested in why I'm doing this, so here are some points:
CherryPy ======== * It's slow and doesn't allow me the fine-grained control I need for my web projects. * No obvious easy way to do URL rewriting. And no controller.default() doesn't count. * I think the sluggishness is mostly because it's written in Python. Also I can't find a good way to let it handle multiple requests at a time. I wrote an AJAX in-house tool recently. It aggregates data from a website using BeautifulSoup. There's an option to aggregate lots of data at the same time, which it achieves by doing lots of XMLHTTP requests. CherryPy doesn't seem happy with doing more than 2 processes at a time, even with thread_pool increased. There could also be a locking issue. I'm pretty sure this isn't related to FF's "max connections/server" features - I'm aware of those. I know a similar PHP tool works fine. SQLObject ========= * I really like SO. Its inteface is great, I wish I could do joins in such an easy manner with PHP. However it is just so slow and flaky I can't handle it any more. Selecting a list of IDs then selecting each row by ID in turn is just unacceptable. REALLY unacceptable. Even my project manager has noticed a website is slow because of this. * I can't stand how SO will bomb out on UnicodeErrors causing a DOS on that page. * I also can't stand how if you remove a row from the database that has a reference somewhere, SO will raise SQLObjectNotFound whenever it goes near that data. My PHP apps don't suffer from this because I write the complete three-table inner join in SQL, which will ignore missing references (and is a boatload faster). It makes the DB a little messy sometimes, but that's nothing compared to DOSing the page with a 500 error. Updating my CRUD methods every time I associate a new object is *not* fun web development. I know the last point can be solved with using a DB that supports foreign key constrains. We use MySQL, there are no PG servers, that's just the way of it. I could convert my tables to InnoDB - I probably will in future. Kid === * The "NoneType is not callable" bug gets old real fast Documentation ============= Mostly my fault for using 0.9a*, but 0.9a* contains the only features which attract me. Nevertheless, no docs is no good, and I need to get stuff done *now* ========================================================= However I will miss some things about TG. Identity is great, top draw on that one. I'll have to port it to PHP very soon. I also like widgets, very much, although without accurate documentation right now it's difficult for me to save time by using them on anything but the most basic of forms. I'm sure with time this problem will go away as I remember more of the API. I'm pretty sure I'll come back, probaly when First Class is ready. As I understand it, FC will be WSGI (which I think means I can run it under Apache without too much flakiness). Also SA support should be properly finished, tested and documented by then, which means I can ditch SO. I will never use SO until it fixes the way in which it selects data from the database. Sometimes slow is just too slow. Actually I'll probably use TG before then. There are certain classes of sites I think TG would be perfect for, but I'll have to think very hard about the specific requirements of the site before firing up TG again. Thanks guys, you're doing a great job. -Rob --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "TurboGears" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/turbogears -~----------~----~----~----~------~----~------~--~---

