contrib/hgweb.wsgi
author Pierre-Yves David <pierre-yves.david@octobus.net>
Thu, 08 Jun 2017 01:38:48 +0100
changeset 32783 4483696dacee
parent 26421 4b0fc75f9403
child 45398 d58a205d0672
permissions -rw-r--r--
profile: upgrade the "profile" context manager to a full class So far we have been able to use a simple decorator for this. However using the current context manager makes the scope of the profiling in dispatch constrainted and the time frame to decide to enable profiling quite limited (using "maybeprofile") This is the first step toward the ability to enable the profiling from within the profiling scope. eg:: with maybeprofiling(ui) as profiler: ... bar.foo(): ... if options['profile']: profiler.start() ... fooz() ... My target usecase is adding support for "--profile" to alias definitions with effect. These are to be used with "profiling.output=blackbox" to gather data about operation that get slow from time to time (eg: pull being minutes instead of seconds from time to time). Of course, in such case, the scope of the profiling would be smaller since profiler would be started after running extensions 'reposetup' (and other potentially costly logic), but these are not relevant for my target usecase (multiple second commits, multiple tens of seconds pull). Currently adding '--profile' to a command through alias requires to re-spin a Mercurial binary (using "!$HG" in alias), which as a significant performance impact, especially in context where startup performance is being worked on... An alternative approach would be to stop using the context manager in dispatch and move back to a try/finally setup.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11002
b1739ebb9f3f hgweb: synchronize fcgi and wsgi scripts
Matt Mackall <mpm@selenic.com>
parents: 7800
diff changeset
     1
# An example WSGI for use with mod_wsgi, edit as necessary
26421
4b0fc75f9403 urls: bulk-change primary website URLs
Matt Mackall <mpm@selenic.com>
parents: 15475
diff changeset
     2
# See https://mercurial-scm.org/wiki/modwsgi for more information
11002
b1739ebb9f3f hgweb: synchronize fcgi and wsgi scripts
Matt Mackall <mpm@selenic.com>
parents: 7800
diff changeset
     3
b1739ebb9f3f hgweb: synchronize fcgi and wsgi scripts
Matt Mackall <mpm@selenic.com>
parents: 7800
diff changeset
     4
# Path to repo or hgweb config to serve (see 'hg help hgweb')
b1739ebb9f3f hgweb: synchronize fcgi and wsgi scripts
Matt Mackall <mpm@selenic.com>
parents: 7800
diff changeset
     5
config = "/path/to/repo/or/config"
7800
58125c27ddbe contrib: add hgwebdir.wsgi, to serve as a better example
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
diff changeset
     6
15475
85cba926cb59 hgweb: add hint about finding library path with debuginstall
Matt Mackall <mpm@selenic.com>
parents: 11502
diff changeset
     7
# Uncomment and adjust if Mercurial is not installed system-wide
85cba926cb59 hgweb: add hint about finding library path with debuginstall
Matt Mackall <mpm@selenic.com>
parents: 11502
diff changeset
     8
# (consult "installed modules" path from 'hg debuginstall'):
11002
b1739ebb9f3f hgweb: synchronize fcgi and wsgi scripts
Matt Mackall <mpm@selenic.com>
parents: 7800
diff changeset
     9
#import sys; sys.path.insert(0, "/path/to/python/lib")
b1739ebb9f3f hgweb: synchronize fcgi and wsgi scripts
Matt Mackall <mpm@selenic.com>
parents: 7800
diff changeset
    10
b1739ebb9f3f hgweb: synchronize fcgi and wsgi scripts
Matt Mackall <mpm@selenic.com>
parents: 7800
diff changeset
    11
# Uncomment to send python tracebacks to the browser if an error occurs:
b1739ebb9f3f hgweb: synchronize fcgi and wsgi scripts
Matt Mackall <mpm@selenic.com>
parents: 7800
diff changeset
    12
#import cgitb; cgitb.enable()
7800
58125c27ddbe contrib: add hgwebdir.wsgi, to serve as a better example
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
diff changeset
    13
58125c27ddbe contrib: add hgwebdir.wsgi, to serve as a better example
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
diff changeset
    14
# enable demandloading to reduce startup time
58125c27ddbe contrib: add hgwebdir.wsgi, to serve as a better example
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
diff changeset
    15
from mercurial import demandimport; demandimport.enable()
58125c27ddbe contrib: add hgwebdir.wsgi, to serve as a better example
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
diff changeset
    16
11002
b1739ebb9f3f hgweb: synchronize fcgi and wsgi scripts
Matt Mackall <mpm@selenic.com>
parents: 7800
diff changeset
    17
from mercurial.hgweb import hgweb
b1739ebb9f3f hgweb: synchronize fcgi and wsgi scripts
Matt Mackall <mpm@selenic.com>
parents: 7800
diff changeset
    18
application = hgweb(config)