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

  • David Tedeyev

    David Tedeye

    20 AĞUSTOS 2011
  • PhoneArena

    PhoneArena

    7 NİSAN 2006
  • Top10Series

    Top10Series

    26 Kasım 2008