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

  • grickle

    grickle

    22 AĞUSTOS 2006
  • Marina and The Diamonds

    Marina and T

    8 Temmuz 2008
  • optionalinfo

    optionalinfo

    29 EKİM 2005