Hi there,
I'm not sure if this is TurboGears specific...
My problem seems to be that every other request.
cherrypy.lib.cptools.serveFile returns an empty list "[]" instead of a
generator. This produces the following backtrace:
Page handler: <bound method Root.default of
<softproof.controllers.Root object at 0xb72840ec>>
Traceback (most recent call last):
File
"/usr/lib/python2.4/site-packages/CherryPy-2.2.1-py2.4.egg/cherrypy/_cphttptools.py",
line 105, in _run
self.main()
File
"/usr/lib/python2.4/site-packages/CherryPy-2.2.1-py2.4.egg/cherrypy/_cphttptools.py",
line 254, in main
body = page_handler(*virtual_path, **self.params)
File "<string>", line 3, in default
File
"/usr/lib/python2.4/site-packages/TurboGears-0.9a6-py2.4.egg/turbogears/controllers.py",
line 273, in expose
output = database.run_with_transaction(
File
"/usr/lib/python2.4/site-packages/TurboGears-0.9a6-py2.4.egg/turbogears/database.py",
line 221, in run_with_transaction
retval = func(*args, **kw)
File "<string>", line 5, in _expose
File
"/usr/lib/python2.4/site-packages/TurboGears-0.9a6-py2.4.egg/turbogears/controllers.py",
line 290, in <lambda>
mapping, fragment, *args, **kw)))
File
"/usr/lib/python2.4/site-packages/TurboGears-0.9a6-py2.4.egg/turbogears/controllers.py",
line 314, in _execute_func
output = errorhandling.try_call(func, *args, **kw)
File
"/usr/lib/python2.4/site-packages/TurboGears-0.9a6-py2.4.egg/turbogears/errorhandling.py",
line 71, in try_call
return func(self, *args, **kw)
File
"/home/arnarb/workdir/softproof/webinterface/softproof/softproof/controllers.py",
line 255, in default
return meth( **kwargs )
File "<string>", line 3, in thumbs
File
"/usr/lib/python2.4/site-packages/TurboGears-0.9a6-py2.4.egg/turbogears/controllers.py",
line 269, in expose
output = func._expose(func, accept, func._allow_json,
File "<string>", line 5, in _expose
File
"/usr/lib/python2.4/site-packages/TurboGears-0.9a6-py2.4.egg/turbogears/controllers.py",
line 290, in <lambda>
mapping, fragment, *args, **kw)))
File
"/usr/lib/python2.4/site-packages/TurboGears-0.9a6-py2.4.egg/turbogears/controllers.py",
line 315, in _execute_func
assert isinstance(output, basestring) or isinstance(output, dict) \
AssertionError: Method JobsByKey.thumbs() returned unexpected output.
Output should be of type basestring, dict or generator.
The relevant code is:
from cherrypy.lib.cptools import serveFile
class JobBrowserBase(object):
def _serveThumb(self, job, page):
datadir = turbogears.config.get('softproof.datadir', None)
thumbpath = os.path.join(datadir, job[:5] + '000', job[:6] +
'00', job, '.thumbs', page)
if not os.path.exists(thumbpath):
raise cherrypy.NotFound()
return serveFile(thumbpath, 'image/jpeg')
class JobsByKey(controllers.RootController, JobBrowserBase):
@expose()
@identity.require(identity.not_anonymous())
def thumbs(self, key, page):
job, expires_d = decodekey(key)
if expires_d is not None and expires_d < datetime.datetime.now():
raise Exception("expired key") # TODO real error
return self._serveThumb(job, page)
# x = self._serveThumb(job, page)
# log.debug(repr(x))
# return x
The strange thing that this seems to happen _exactly_ every other
request. Hitting reload again produces the jpeg-file.
These are my versions:
TurboGears 0.9a6
CherryPy 2.2.1
Any ideas?
Arnar
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---