Hello! Two problems started sometime in the last 12 hours.
1. Truncated HTTP responses
HTTP responses from my site are being truncated (e.g. it only sends some of the data it should). It happens after about 30k to 128k bytes have been served -- the response just ends abruptly. Pages smaller than that work fine.
I can still download my files through the admin dashboard; this only affects HTTP.
You can test this by downloading this random file from my site. It should be 3,929,709 bytes, but you'll only get about 28,490 bytes.
curl http://piecharts.pythonanywhere.com/static/GitX-dev.dmg > test.dmg
curl: (18) transfer closed with 3901219 bytes remaining to read
Error log:
2015-01-31 11:25:13,018 :IOError: write error
2015-01-31 11:25:13,018 :Traceback (most recent call last):
2015-01-31 11:25:13,019 : File "/bin/user_wsgi_wrapper.py", line 128, in __call__
2015-01-31 11:25:13,019 : start_response('500 Internal Server Error', [('Content-type', 'text/html')], sys.exc_info())
2015-01-31 11:25:13,019 :IOError: headers already sent
Server log:
2015-01-31 11:12:41 Sat Jan 31 11:12:41 2015 - SIGPIPE: writing to a closed pipe/socket/fd (probably the client disconnected) on request /list (ip 10.190.154.117) !!!
2015-01-31 11:12:41 Sat Jan 31 11:12:41 2015 - uwsgi_response_write_body_do(): Broken pipe [core/writer.c line 322] during GET /list (10.190.154.117)
2. SQLite can't write to /var/tmp?
I'm also getting an SQLite error: "sqlite3.OperationalError: database or disk is full". I still have lots of space left in my account. Apparently this happens when /tmp or /var/tmp is full or not writable: https://recursiveramblings.wordpress.com/2014/01/23/working-around-sqlite3-operationalerror-database-or-disk-is-full/
However, /tmp and /var/tmp appear to be empty and I can write into them from the command line, so... ???
Maybe something is killing my app process partway through each HTTP request and SQLite responds with that error while getting killed.
The workaround in that article solves the problem for me (by telling SQLite to use memory instead of /tmp) but I still have the problem with the HTTP requests ending early.