<div class="markdown">
<p dir="auto">Hi all,</p>

<p dir="auto">I am using Twisted Web WSGIResource to host a Django site. Here's the code I use to setup the WSGI resource (other boilerplate skipped)</p>

<p dir="auto">def wsgi<em>resource():<br>
    from django.core.handlers.wsgi import WSGIHandler<br>
    pool = threadpool.ThreadPool()<br>
    pool.start()<br>
    # Allow Ctrl-C to get you out cleanly:<br>
    reactor.addSystemEventTrigger('after', 'shutdown', pool.stop)<br>
    wsgi</em>resource = wsgi.WSGIResource(reactor, pool, WSGIHandler())<br>
    return wsgi_resource</p>

<p dir="auto">This generally worked quite well. However I have an API endpoint that gets hit with multiple POST requests per second (not very much - I'd say 10-20 req/sec at most). Sometimes I see this in the logs:</p>

<p dir="auto">Internal Server Error: /cas/eventlog/<br>
Traceback (most recent call last):<br>
  File "/site-packages/django/core/handlers/base.py", line 114, in get<em>response<br>
    response = wrapped</em>callback(request, <em>callback_args, *</em>callback<em>kwargs)<br>
  File "/site-packages/django/views/decorators/csrf.py", line 57, in wrapped</em>view<br>
    return view<em>func(<em>args, *</em>kwargs)<br>
  File "/views.py", line 488, in event</em>log<br>
    data = json.loads(request.body)<br>
  File "/site-packages/django/http/request.py", line 192, in body<br>
    self.<em>body = self.read()<br>
  File "/site-packages/django/http/request.py", line 246, in read<br>
    return self.</em>stream.read(<em>args, *</em>kwargs)<br>
  File "/site-packages/django/core/handlers/wsgi.py", line 45, in read<br>
    result = self.buffer + self.<em>read</em>limited()<br>
  File "/site-packages/django/core/handlers/wsgi.py", line 39, in <em>read</em>limited<br>
    result = self.stream.read(size)<br>
  File "/site-packages/twisted/web/wsgi.py", line 94, in read<br>
    return self._wrapped.read(size)<br>
ValueError: I/O operation on closed file.</p>

<p dir="auto">Any pointers on why would this happen? Why would Twisted close the file early? Could it be that I need to increase the threadpool size? </p>

<p dir="auto">I use treq 0.2.0 for the requests, with the "persistent" flag turned on, if that makes any difference. Twisted 13.2.0 and Django 1.6, python 2.7.1 on OS X 10.7.5.</p>

<p dir="auto">Many thanks,<br>
Orestis</p>

</div>