[twisted] add request error handler to avoid finishing it twice
And avoid stack traces like::
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 783, in __bootstrap
self.__bootstrap_inner()
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
--- <exception caught here> ---
[...]
File "/usr/lib/python2.7/dist-packages/twisted/python/threadpool.py", line 196, in _worker
result = context.call(ctx, function, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext
return self.currentContext().callWithContext(ctx, func, *args, **kw)
File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext
return func(*args,**kw)
File "/home/me/envs/grshell-cw/cubicweb/statsd_logger.py", line 121, in __call__
return self.callable(*args, **kw)
File "/home/me/envs/grshell-cw/cubicweb/etwist/server.py", line 131, in render_request
code=500, twisted_request=request)
File "/home/me/envs/grshell-cw/cubicweb/etwist/http.py", line 22, in __init__
self._finalize()
File "/home/me/envs/grshell-cw/cubicweb/etwist/http.py", line 46, in _finalize
self._twreq.finish()
File "/usr/lib/python2.7/dist-packages/twisted/web/server.py", line 228, in finish
return http.Request.finish(self)
File "/usr/lib/python2.7/dist-packages/twisted/web/http.py", line 931, in finish
"Request.finish called on a request after its connection was lost; "
exceptions.RuntimeError: Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.
=====================================================
|cubicweb| - The Semantic Web is a construction game!
=====================================================
|cubicweb| is a semantic web application framework, licensed under the LGPL,
that empowers developers to efficiently build web applications by reusing
components (called `cubes`) and following the well known object-oriented design
principles.
Main Features
~~~~~~~~~~~~~
* an engine driven by the explicit :ref:`data model
<TutosBaseCustomizingTheApplicationDataModel>` of the application,
* a query language named :ref:`RQL <RQL>` similar to W3C's SPARQL,
* a :ref:`selection+view <TutosBaseCustomizingTheApplicationCustomViews>`
mechanism for semi-automatic XHTML/XML/JSON/text generation,
* a library of reusable :ref:`components <Cube>` (data model and views) that
fulfill common needs,
* the power and flexibility of the Python_ programming language,
* the reliability of SQL databases, LDAP directories, Subversion and Mercurial
for storage backends.
Built since 2000 from an R&D effort still continued, supporting 100,000s of
daily visits at some production sites, |cubicweb| is a proven end to end solution
for semantic web application development that promotes quality, reusability and
efficiency.
QuickStart
~~~~~~~~~~
The impatient developer will move right away to :ref:`SetUpEnv` then to :ref:`ConfigEnv`.
Social
~~~~~~
* Chat on the `jabber forum`_
* Discuss on the `mailing-list`_
* Discover on the `blog`_
* Contribute on the forge_
.. _Logilab: http://www.logilab.fr/
.. _forge: http://www.cubicweb.org/project/
.. _Python: http://www.python.org/
.. _`jabber forum`: http://www.logilab.org/blogentry/6718
.. _`mailing-list`: http://lists.cubicweb.org/mailman/listinfo/cubicweb
.. _blog: http://www.cubicweb.org/blog/1238
Narrative Documentation
~~~~~~~~~~~~~~~~~~~~~~~
A.k.a. "The Book"
.. toctree::
:maxdepth: 2
book/intro/index
.. toctree::
:maxdepth: 2
tutorials/index
.. toctree::
:maxdepth: 3
book/devrepo/index
book/devweb/index
book/pyramid/index
.. toctree::
:maxdepth: 2
book/admin/index
book/additionnal_services/index
book/annexes/index
Changes
~~~~~~~
.. toctree::
:maxdepth: 2
changes/changelog
Reference documentation
~~~~~~~~~~~~~~~~~~~~~~~
API
'''
.. toctree::
:maxdepth: 1
:glob:
api/*
.. toctree::
:maxdepth: 1
js_api/index
Developpers
~~~~~~~~~~~
.. toctree::
:maxdepth: 1
:glob:
dev/*
Indexes
~~~~~~~
* the :ref:`genindex`,
* the :ref:`modindex`,