О, сега разбирам, че ИМА документиран списък с параметри, глупаво!

person SƲmmēr Aƥ    schedule 08.08.2012    source източник
comment
това "решава" ли проблема ви?   -  person Pureferret    schedule 08.05.2015
comment
Или се свържете с uwsgi и т.н.   -  person KyungHoon Kim    schedule 04.08.2016


Отговори (5)


Вашият сървърен процес е получил SIGPIPE запис в сокет. Това обикновено се случва, когато пишете в сокет, който е напълно затворен от другата (клиентска) страна. Това може да се случи, когато клиентска програма не изчака получаването на всички данни от сървъра и просто затвори сокет (използвайки функцията close).

В C програма обикновено бихте опитали да зададете да игнорирате SIGPIPE сигнал или да зададете фиктивен манипулатор на сигнала за него. В този случай ще бъде върната проста грешка при запис в затворен сокет. Във вашия случай Python изглежда хвърля изключение, което може да се третира като преждевременно прекъсване на връзката на клиента.

person Maksim Skurydzin    schedule 08.08.2012
comment
Ето един добър отговор относно обработката на прекъсвания на връзката с клиенти: stackoverflow.com/a/180922/276274 - person Maksim Skurydzin; 08.08.2012

Грешката с прекъсната тръба обикновено възниква, ако вашата заявка е блокирана или отнема твърде много време и след изчакване от страна на заявката, тя ще затвори връзката и след това, когато страната на отговора (сървърът) се опита да пише в сокета, ще хвърли грешка при счупване на тръбата.

person Aaren Shar    schedule 20.01.2015

Зависи от това как сте го тествали и вероятно от разликите в изпълнението на TCP стека на персоналния компютър и сървъра.

Например, ако вашият sendall винаги завършва незабавно (или много бързо) на персоналния компютър, връзката може просто никога да не се е прекъсвала по време на изпращане. Това е много вероятно, ако вашият браузър работи на същата машина (тъй като няма реално забавяне на мрежата).


Като цяло, просто трябва да се справите със случая, когато клиент прекъсва връзката, преди да сте приключили, като обработвате изключението.

Не забравяйте, че TCP комуникациите са асинхронни, но това е много по-очевидно при физически отдалечени връзки, отколкото при локални, така че условия като това могат да бъдат трудни за възпроизвеждане на локална работна станция. По-конкретно, loopback връзките на една машина често са почти синхронни.

person Useless    schedule 08.08.2012
comment
Тествам го, като стартирам paster serve abc.ini --reload, но уеб страницата никога не може да бъде достигната. А за VMWare Workstation използвам опцията само за хост за мрежова връзка. Така че можете ли любезно да посъветвате някакъв начин да го стартирате правилно? - person SƲmmēr Aƥ; 08.08.2012
comment
Мисля, че това е отделен въпрос за мрежова конфигурация на VMWare (страхувам се, че не знам нищо за това). Причината, поради която работната станция и сървърът може да се държат различно, е посочена по-горе, а решението е просто да се справи с изключението с try ... except - person Useless; 08.08.2012

Това може да се дължи на факта, че използвате два метода за вмъкване на данни в базата данни и това води до забавяне на сайта.

def add_subscriber(request, email=None):
    if request.method == 'POST':
        email = request.POST['email_field']
        e = Subscriber.objects.create(email=email).save()  <==== 
        return HttpResponseRedirect('/')
    else:
        return HttpResponseRedirect('/')

В горната функция грешката е там, където сочи стрелката. Правилното изпълнение е по-долу:

def add_subscriber(request, email=None):
    if request.method == 'POST':
        email = request.POST['email_field']
        e = Subscriber.objects.create(email=email)
        return HttpResponseRedirect('/')
    else:
        return HttpResponseRedirect('/')
person Kuldeep K. Rishi    schedule 17.01.2014

Ако това е уеб приложение или услуга на Python като Flask или FastAPI, тази грешка може да възникне, ако производственият сървър е конфигуриран да изчаква заявка, която отнема твърде много време. Има подходящи параметри в Gunicorn и Uvicorn като GRACEFUL_TIMEOUT и TIMEOUT, които трябва да бъдат конфигурирани според нуждите на вашето приложение. Може също така да искате да проверите праговете за изчакване на обратния прокси или шлюз.

person smartexpert    schedule 22.06.2021