SORU
27 Mayıs 2010, PERŞEMBE


Nasıl Django ile bir HttpResponse akışı

'Merhaba Dünya' yanıtları Django (1.2) çalışma akışı. almaya çalışıyorum Bir jeneratör ve yield Bu fonksiyonu kullanmak için nasıl anladım. Ama hala tepki yok izle. -- Belki ETAG hesap makinesi ile mucking bir katman var sanıyorum? Ama devre dışı bırakmak için nasıl emin değilim. Biri yardım edebilir mi?

İşte "Merhaba" ben akışı şimdiye kadar: . dünya

def stream_response(request):
    resp = HttpResponse( stream_response_generator())
    return resp

def stream_response_generator():
    for x in range(1,11):
        yield "%s\n" % x  # Returns a chunk of the response to the browser
        time.sleep(1)

CEVAP
27 Mayıs 2010, PERŞEMBE


ETAG katman condition decorator kullanarak devre dışı bırakabilirsiniz. Bu akış yanıtınız HTTP üzerinden geri alacak. curl gibi bir komut satırı aracı ile bunu doğrulayabilirsiniz. Ama muhtemelen tarayıcınız nehir tepki göstermek için yeterli olmayacaktır. Tarayıcı akarsu gibi tepki göstermeye teşvik etmek için, boru aşağı boşluk bir grup kendi arabellekleri doldurmak için zorlamak için zorlayabilir. Örnek aşağıdaki gibidir:

from django.views.decorators.http import condition

@condition(etag_func=None)
def stream_response(request):
    resp = HttpResponse( stream_response_generator(), mimetype='text/html')
    return resp

def stream_response_generator():
    yield "<html><body>\n"
    for x in range(1,11):
        yield "<div>%s</div>\n" % x
        yield " " * 1024  # Encourage browser to render incrementally
        time.sleep(1)
    yield "</body></html>\n"

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Charles Renaud

    Charles Rena

    10 Kasım 2007
  • dhcrr's channel

    dhcrr's chan

    2 Ocak 2007
  • ThreadBanger

    ThreadBanger

    2 Mart 2007