looks like it's a bug in utils.py. It uses tempfile.NamedTemporaryFile() to generate a temp file. On Windows the file cannot be opened a second time. Using tempfile.mkstemp() instead works but you lose the guaranteed cleanup of the temp file.
http://docs.python.org/library/tempfile.html#tempfile.NamedTemporaryFile ...Whether the name can be used to open the file a second time, while the named temporary file is still open, varies across platforms (it can be so used on Unix; it cannot on Windows NT or later).... here's my fix for it. Line 733 of utils.py def __call__(self, *args): ##, **kw): kw unused import hotshot, hotshot.stats, tempfile, os ##, time already imported temp = tempfile.mkstemp() os.close(temp[0]) temp_filename = temp[1] prof = hotshot.Profile(temp_filename) stime = time.time() result = prof.runcall(self.func, *args) stime = time.time() - stime prof.close() import cStringIO out = cStringIO.StringIO() stats = hotshot.stats.load(temp_filename) #delete the temp file as son as we are done with it os.remove(temp_filename) stats.stream = out stats.strip_dirs() stats.sort_stats('time', 'calls') stats.print_stats(40) stats.print_callers() x = '\n\ntook '+ str(stime) + ' seconds\n' x += out.getvalue() return result, x asmo wrote: > OK, I guess this is what needs to be done: > > --- > if __name__ == "__main__": > app.run( web.http.profiler ) > --- > > Testing this on my Vista (ouch) machine I get this error, I guess this > is related to my environment: > > --- > Traceback (most recent call last): > File "c:\Python25\lib\site-packages\web\wsgiserver\__init__.py", > line 1174, in communicate > req.respond() > File "c:\Python25\lib\site-packages\web\wsgiserver\__init__.py", > line 544, in respond > self._respond() > File "c:\Python25\lib\site-packages\web\wsgiserver\__init__.py", > line 556, in _respond > response = self.wsgi_app(self.environ, self.start_response) > File "c:\Python25\lib\site-packages\web\httpserver.py", line 201, in > __call__ > return self.app(environ, xstart_response) > File "c:\Python25\Lib\site-packages\web\http.py", line 132, in > profile_internal > out, result = profile(app)(e, o) > File "c:\Python25\Lib\site-packages\web\utils.py", line 736, in > __call__ > prof = hotshot.Profile(temp.name) > File "c:\Python25\lib\hotshot\__init__.py", line 13, in __init__ > logfn, self.lineevents, self.linetimings) > IOError: [Errno 13] Permission denied: 'c:\\users\\asmo\\appdata\\local > \\temp\\tmpnimxms' > --- > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web.py" 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/webpy?hl=en -~----------~----~----~----~------~----~------~--~---
