AFAIK,
The only place where CherryPy returns a [] in that context is when the
static file has not been modified and CherryPy decides to return a 304 Not
Modified.
The problem comes from the TG controller which asserts on the returned
type I think.
- Sylvain
>
> 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
-~----------~----~----~----~------~----~------~--~---