Think I have a fix. Will push a MP: *** PROFILER RESULTS *** file_server (/home/dooferlad/dev/license-protection/bigdir/license_protected_downloads/views.py:395) function called 1 times 824015 function calls (816173 primitive calls) in 0.786 seconds Ordered by: cumulative time, internal time, call count List reduced from 985 to 40 due to restriction <40> ncalls tottime percall cumtime percall filename:lineno(function) 1 0.003 0.003 0.786 0.786 views.py:395(file_server) 1 0.016 0.016 0.552 0.552 views.py:66(dir_list) 433 0.004 0.000 0.305 0.001 views.py:223(is_protected) 434 0.004 0.000 0.290 0.001 buildinfo.py:10(__init__) 434 0.116 0.000 0.256 0.001 buildinfo.py:122(parseData) 1 0.000 0.000 0.178 0.178 __init__.py:14(render_to_response) 1 0.000 0.000 0.177 0.177 loader.py:158(render_to_string) 433 0.002 0.000 0.173 0.000 models.py:11(all_with_hashes) [29/May/2013 14:34:26] "GET /sources HTTP/1.1" 200 228034 2/1 0.000 0.000 0.173 0.173 base.py:136(render) 3/1 0.000 0.000 0.173 0.173 base.py:133(_render) 1305/1 0.012 0.000 0.173 0.173 base.py:819(render) 2190/1 0.002 0.000 0.171 0.171 debug.py:72(render_node) 1 0.000 0.000 0.171 0.171 loader_tags.py:100(render) 1 0.000 0.000 0.168 0.168 loader_tags.py:48(render) 1 0.009 0.009 0.165 0.165 defaulttags.py:131(render) 433 0.001 0.000 0.155 0.000 query.py:616(filter) 433 0.002 0.000 0.154 0.000 query.py:630(_filter_or_exclude) 3468 0.014 0.000 0.109 0.000 debug.py:82(render) 433 0.002 0.000 0.105 0.000 query.py:853(_clone) 433 0.009 0.000 0.102 0.000 query.py:235(clone) 188790 0.087 0.000 0.087 0.000 buildinfo.py:42(_set) 5196/1732 0.018 0.000 0.083 0.000 copy.py:145(deepcopy) 1302 0.003 0.000 0.056 0.000 defaulttags.py:269(render) 866/433 0.005 0.000 0.045 0.000 copy.py:234(_deepcopy_tuple) 433 0.004 0.000 0.044 0.000 query.py:1219(add_q) 6074 0.009 0.000 0.037 0.000 base.py:568(resolve) 3509 0.009 0.000 0.036 0.000 functional.py:170(wrapper) 433 0.008 0.000 0.035 0.000 query.py:1030(add_filter) 433 0.002 0.000 0.035 0.000 copy.py:306(_reconstruct) 5196 0.033 0.000 0.035 0.000 copy.py:267(_keep_alive) 193462 0.032 0.000 0.032 0.000 {method 'strip' of 'str' objects} 1 0.000 0.000 0.029 0.029 bzr_version.py:10(get_my_bzr_revno) 4384 0.028 0.000 0.028 0.000 {posix.stat} 1 0.000 0.000 0.027 0.027 branch.py:177(open) 4778 0.004 0.000 0.026 0.000 base.py:717(resolve) 1 0.000 0.000 0.026 0.026 bzrdir.py:1070(open_branch) 1 0.000 0.000 0.026 0.026 branch.py:1995(open) 3466 0.008 0.000 0.025 0.000 html.py:32(escape) 103020 0.025 0.000 0.025 0.000 {isinstance} 1 0.000 0.000 0.024 0.024 bzrdir.py:549(find_repository)