Django broken pipe error

dr.roman.graf at gmail.com dr.roman.graf at gmail.com
Mon Jan 2 09:14:06 EST 2017


On Monday, December 12, 2016 at 6:38:39 PM UTC+1, justin walters wrote:
> On Mon, Dec 12, 2016 at 7:27 AM, roma <dr.roman.graf at gmail.com> wrote:
> 
> > Thanks Justin,
> >
> > I believe, the whole database story has no influence on the broken pipe
> > error. I've commented out the whole block and leave only return line:
> > return HttpResponse(res, content_type="text/plain; charset=utf-8")
> > The error is still present. And I have no influence on that.
> >
> > I call python from js client:
> >
> >     var newTrendReport = new App.TrendReport();
> >     newTrendReport.set('search_phrase', search_phrase);
> >     newTrendReport.set('time_from', time_from);
> >     newTrendReport.set('time_to', time_to);
> >     newTrendReport.set('time_scale', time_scale);
> >     newTrendReport.set('category', category);
> >     newTrendReport.startExport(
> >
> >         function(response){
> >             console.log("Successfully calculated trend report.");
> >                 App.trendPage = new App.TrendPageView();
> >                 App.trendPage.render(response);
> >         },
> >     );
> >
> > go throw:
> >
> >     App.TrendReport = Backbone.Model.extend({
> >         urlRoot: "/api/trend_reports/",
> >         defaults: {
> >             search_phrase: "",
> >             time_from: "",
> >             time_to: "",
> >             time_scale: "",
> >             category: ""
> >         },
> >
> >         startExportSuffix: "/export_report/",
> >
> >         startExport: function( successCallback, errorCallback ) {
> >             console.log("start trend calculation");
> >             var that = this;
> >             var ajaxUrl = this.startExportSuffix;
> >             var options = {
> >                 method: "POST",
> >                 data: this.attributes,
> >                 contentType: "application/json;charset=UTF-8",
> >                 dataType: "json",
> >
> >                 error: errorCallback,
> >                 success: successCallback
> >             };
> >             console.log("start trend export sync");
> >             App.ajax(ajaxUrl, options);
> >         }
> >
> >     });
> >
> > and come in export_report method.
> >
> > My urls.py:
> >
> >     url(r'^export_report', ensure_csrf_cookie(views.export_report),
> > name="export_report"),
> > --
> > https://mail.python.org/mailman/listinfo/python-list
> >
> 
> I'm not super familiar with the way backbone does http requests, but
> something seems off about the startExport function.
> It seems to me that you are sending a post request to "/export_report/"
> which is an endpoint that I'm guessing is nested
> in an include from "/api/trend_reports/". However, it looks like the error
> you're getting above says you aren't sending
> the request to "https://root.com/api/trend_reports/export_report/".
> Instead, you are sending the request to "https://root.com/export_report/" .
> Though, I'm also not sure that's the case because that would normally throw
> a 404.
> 
> I also noticed that you set content type to 'application/json' in your js,
> but the view function returns a 'text/plain' content type. Is
> There a reason for this?
> 
> The data key in your js http function is set to the attributes variable
> which, as far as I can tell, does not exist.
> 
> There's a lot going on here, but I think you can probably narrow it down to
> something in your backbone code or the way
> backbone handles http requests as the error you are getting is caused by
> the client prematurely closing the socket.
> It's possible backbone will stop reading the response since it isn't the
> same content-type as the request.

Thanks a lot Justin,

The problem was solved when I employed standard Framework methods for creation of new database object:

in JS:
var trendModel = new App.TrendModel();
    trendModel.set("phrase", search_phrase);
    trendModel.set("from_time", time_from);
    trendModel.set(...
    trendModel.save(...

in PY:
    def create(self, request):
...

I've also created extra template and additional View. PageView for some unclear reason didn't support creation of new object - this event just disappeared.

Regards,

Roman


More information about the Python-list mailing list