Django - ответ сброса?

У меня есть эта проблема с некоторыми играми с помощью ВИНА (на самом деле версия Перекрестных соединений) от того, что я смог собрать WINE, и Compiz может иметь некоторые проблемы, играющие хорошо вместе. Некоторые игры хорошо работают, другие покажут главную панель и средство запуска. Если я помню право, это обычно следует из плохого программирования в Windows-программе, которую Вы пытаетесь выполнить (я мог быть неправ в этом, я иду полностью из памяти сюда)

, у меня нет проблемы с этими теми же играми, если я вхожу в Единицу, 2D, который не использует Compiz. Мне бы хотелось дать Вам ссылки, которые я нашел об этом, но я не помню, где они были.

До собственных игр Linux, у меня нет игр, что я заметил наличие этой проблемы, если я использую полноэкранную опцию собственные, у меня есть все покрытие целый экран.

8
задан Paolo Bergantino 3 September 2009 в 01:29
поделиться

2 ответа

Большинство веб-серверов (например, FCGI / SCGI) выполняют собственную буферизацию, клиенты HTTP - свою собственную и т. Д. На самом деле очень сложно удалить данные таким образом и получить их клиентом, потому что это нетипичная операция.

Ближе всего к тому, что вы пытаетесь сделать, было бы передать итератор HttpResponse, и делать работу в генераторе; что-то вроде этого:

def index(request):
    def do_work():
        step_1()
        yield "step 1 complete"
        step_2()
        yield "step 2 complete"
        step_3()
        yield "step 3 complete"
    return HttpResponse(do_work())

... но это не обязательно сбрасывать. (Не проверенный код, но вы поняли идею; см. http://docs.djangoproject.com/en/dev/ref/request-response/#passing-iterators .)

Большая часть инфраструктура просто не ожидает частичного ответа. Даже если Django не выполняет буферизацию, ваш интерфейсный сервер может быть, и клиент, вероятно, тоже. Вот почему в большинстве случаев для этого используются обновления по запросу: отдельный интерфейс для запроса состояния длительного запроса.

(Я бы тоже хотел иметь возможность делать надежные push-обновления для такого рода вещей ... )

9
ответ дан 5 December 2019 в 14:04
поделиться

Я не уверен, что вам нужно использовать функцию flush ().

Ваш AJAX-запрос должен просто перейти в представление django.

Если ваши шаги можно разбить, делайте это просто и создавайте представление для каждого шага. Таким образом, один процесс завершается, вы можете обновить пользователя и запустить следующий запрос через AJAX.

views.py

def do_something(request):
    # stuff here
    return HttpResponse()

def do_something_else(request):
    # more stuff
    return HttpResponse()
3
ответ дан 5 December 2019 в 14:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: