У меня есть эта проблема с некоторыми играми с помощью ВИНА (на самом деле версия Перекрестных соединений) от того, что я смог собрать WINE, и Compiz может иметь некоторые проблемы, играющие хорошо вместе. Некоторые игры хорошо работают, другие покажут главную панель и средство запуска. Если я помню право, это обычно следует из плохого программирования в Windows-программе, которую Вы пытаетесь выполнить (я мог быть неправ в этом, я иду полностью из памяти сюда)
, у меня нет проблемы с этими теми же играми, если я вхожу в Единицу, 2D, который не использует Compiz. Мне бы хотелось дать Вам ссылки, которые я нашел об этом, но я не помню, где они были.
До собственных игр Linux, у меня нет игр, что я заметил наличие этой проблемы, если я использую полноэкранную опцию собственные, у меня есть все покрытие целый экран.
Большинство веб-серверов (например, 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-обновления для такого рода вещей ... )
Я не уверен, что вам нужно использовать функцию flush ().
Ваш AJAX-запрос должен просто перейти в представление django.
Если ваши шаги можно разбить, делайте это просто и создавайте представление для каждого шага. Таким образом, один процесс завершается, вы можете обновить пользователя и запустить следующий запрос через AJAX.
views.py
def do_something(request):
# stuff here
return HttpResponse()
def do_something_else(request):
# more stuff
return HttpResponse()