Well I know the major bottle neck in the site is the binary tree. I am still trying to figure out how to do this the best and most efficient. If this was a stand alone app in c/c++ this would all be in memory which wouldn't be such a problem. However how this is implemented it needs to query through the database to find nodes. As you can imagine as we get more and more members this will take much longer to run.
See bellow code, binary_tree is called from a action and distributor is a database object IE: db(db.distributors.id == id).select().first() def binary_tree(self, original_dist, distributor, levels, counter=0, month=None): children = [] left_count = right_count = counter target_month = month if distributor.left_id and left_count < levels: left_count += 1 #print "left - A", distributor.left_id children.append(self.binary_tree(original_dist, distributor.left_id, levels, left_count, target_month)) if distributor.right_id and right_count < levels: right_count += 1 #print "right - B", distributor.right_id children.append(self.binary_tree(original_dist, distributor.right_id, levels, right_count, target_month)) if distributor.sponsor_id == original_dist: sponsored_by_original = True else: sponsored_by_original = False tree = { 'id': ("B" if distributor.side else "A") + "-" + str(distributor.id), 'name': "<img src='/static/images/" + \ ("top_tree_icon.png" if distributor.id == original_dist else ("sponsored_tree_icon.png" if sponsored_by_original else "user_tree_icon.png")) + \ "' id='img-" + ("B" if distributor.side else "A") + "-" + str(distributor.id) + "' /><span class='idlabel'>" + \ str("0"*(7-len(str(distributor.id))))+str(distributor.id) + "-" + ("B" if distributor.side else "A") + \ "</span><div class='userinfo' id='id-" + ("B" if distributor.side else "A") + "-" + \ str(distributor.id) + "'><ul><li class='userinfotop'><h4>" + distributor.display_name + "</h4><span>" + \ self.T("A CV:") + "<b>" + (str(distributor.left_id.binary_cv_total) if distributor.left_id else str(0)) + \ "</b></span><span>" + self.T("B CV:") + "<b>" + (str(distributor.right_id.binary_cv_total) if distributor.right_id else str(0)) + \ "</b></span></li><li class='userinfobottom'><p>" + self.T("Sponsored by me ") + (self.T("YES") if sponsored_by_original else self.T("NO")) + \ "</p><p>" + (self.T("Has down lines") if distributor.right_id or distributor.left_id else self.T("Has no down lines")) + "</p><p>" + \ (self.T("Disqualified ") if not distributor.quali_bonus else self.T("Qualified ")) + self.T("to get bonus") + "</p></li></ul></div>", 'children': children } return tree *# This is the biggest bottle neck of our entire application. Need a much better way to handle tree traversing.* def traversingTree(self, distributor, list): if distributor: left_node = distributor.left_id right_node = distributor.right_id if left_node: list.append(left_node) self.traversingTree(left_node,list) if right_node: list.append(right_node) self.traversingTree(right_node,list) def bottom_right_b(self, distributor): right_id = None cur_dist = distributor while cur_dist.right_id: right_id = cur_dist.right_id cur_dist = cur_dist.right_id print "Right Bottom", right_id return right_id def bottom_left_a(self, distributor): left_id = None cur_dist = distributor while cur_dist.left_id: left_id = cur_dist.left_id cur_dist = cur_dist.left_id print "Left Bottom", left_id return left_id On Sat, Apr 7, 2012 at 8:16 AM, Massimo Di Pierro < massimo.dipie...@gmail.com> wrote: > Right....what? [changing color to red] Note to self. Never do math before > fully waking up. > > Correction: 2 reqs/second/server. (1M/24/60/60/6 servers). Still ok from > web2py prospective. > If all requests hit the database once: 12 reqs/second. It really depends > of what those requests do. > > Massimo > > On Saturday, 7 April 2012 09:33:38 UTC-5, Anthony wrote: >> >> 1M reqs/day is 7 reqs/minute. >>> >> >> Now we know how Massimo gets so much done -- his days are 2400 hours >> long. ;-) >> > -- -- Regards, Bruce Wade http://ca.linkedin.com/in/brucelwade http://www.wadecybertech.com http://www.fittraineronline.com - Fitness Personal Trainers Online http://www.warplydesigned.com