2017-07-13 17 views
7

मेरे पास एक Django ऐप है जो हरोकू पर पीडीएफ उत्पन्न करने के लिए django-wkhtmltopdf का उपयोग करता है। कुछ प्रतिक्रिया 30 सेकंड टाइमआउट से अधिक है। चूंकि यह नि: शुल्क स्तर पर चलने वाली एक सबूत-अवधारणा है, इसलिए मैं एक कार्यकर्ता/मतदान प्रक्रिया में जाने के लिए जो कुछ भी लेना चाहता हूं उसे अलग नहीं करना चाहूंगा। मेरे वर्तमान दृश्य इस तरह दिखता है:डेजैगो में हेरोकू टाइमआउट से बचने के लिए स्ट्रीमिंग प्रतिक्रिया लेना

def dispatch(self, request, *args, **kwargs): 
    do_custom_stuff() 
    return super(MyViewClass, self).dispatch(request, *args, **kwargs) 

वहाँ एक रास्ता मैं नकली एक स्ट्रीमिंग प्रतिक्रिया like this करने के लिए या empy बेडौल approach mentioned here साथ दृश्य वर्ग के dispatch विधि ओवरराइड कर सकते हैं एक खाली जवाब भेजने का जब तक पीडीएफ प्रदान की गई है है ? पीडीएफ भेजने के लिए बहुत समय देने के लिए empty byte will restart the timeout process भेजना।

+0

कैसे faking हैं प्रतिक्रिया टाइमआउट समस्या का समाधान:

अगर आपको लगता है अजवाइन ज्यादा करने के लिए है, वहाँ प्रकाश विकल्प है कि बस महान काम करेंगे कर रहे हैं? –

+0

@DanielRoseman अच्छा सवाल, व्याख्या करने के लिए अद्यतन किया गया। – Tom

+0

क्या आप वर्कअराउंड बनाने के लिए चैनल का उपयोग कर सकते हैं? –

उत्तर

3

मैंने सेलेरी का उपयोग करके एक समान समस्या हल की, इस तरह कुछ।

def start_long_process_view(request, pk): 
    task = do_long_processing_stuff.delay() 
    return HttpResponse(f'{"task":"{task.id}"}') 

फिर आपके पास दूसरा दृश्य हो सकता है जो कार्य स्थिति की जांच कर सकता है।

from celery.result import AsyncResult 

def check_long_process(request, task_id): 
    result = AsyncResult(task_id) 
    return HttpResponse(f'{"state":"{result.state}"') 

अंततः जावास्क्रिप्ट का उपयोग करके आप कार्य शुरू होने के ठीक बाद ही स्थिति प्राप्त कर सकते हैं। अपने उपयोगकर्ताओं को एक अच्छी प्रतिक्रिया देने के लिए प्रत्येक आधे सेकेंड को अपडेट करना पर्याप्त होगा। https://djangopackages.org/grids/g/workers-queues-tasks/

+1

:) वास्तव में वह दृष्टिकोण है जिसे मैं टालने की कोशिश कर रहा हूं अगर मैं सिर्फ इसलिए कर सकता हूं क्योंकि हम बजट से बाहर हैं। यद्यपि आवश्यक होने पर मैं कार्यकर्ता/मतदान के साथ जाऊंगा। धन्यवाद। – Tom

संबंधित मुद्दे