2015-05-06 4 views
10

मैंने 2013 से कुछ पोस्ट पढ़ी हैं कि गनिकोर्न टीम थ्रेड बफरिंग लेयर वर्कर्स मॉडल बनाने की योजना बना रही थी, वेट्रेस कैसे काम करती है। क्या गठबंधन एसिंक कार्यकर्ता क्या करता है? ग्वा्रेड श्रमिकों को 2014 में संस्करण 1 9.0 के साथ रिलीज़ किया गया था।क्या गनिकोर्न का गठबंधन एसिंक कार्यकर्ता वेट्रेस के समान है?

वेट्रेस के पास मास्टर एसिंक थ्रेड है जो बफर अनुरोध करता है, और अनुरोध I/O समाप्त होने पर प्रत्येक अनुरोध को सिंक वर्कर थ्रेड में से प्रत्येक को अनुरोध करता है।

गनिकोर्न ग्थ्रेड में अधिक दस्तावेज नहीं है, लेकिन यह समान लगता है। docs से:

कार्यकर्ता गठबंधन एक थ्रेडेड कार्यकर्ता है। यह मुख्य पाश में कनेक्शन स्वीकार करता है, कनेक्शन कनेक्शन के रूप में थ्रेड पूल में स्वीकृत कनेक्शन जोड़े जाते हैं।

मैं केवल, पूछना क्योंकि मैं के बारे में अजगर async आई/ओ कोड सुपर जानकार नहीं हूँ, हालांकि gthread.py की एक सरसरी पढ़ने इंगित करने के लिए यह एक सॉकेट-बफरिंग प्रक्रिया है कि से कार्यकर्ता धागे की रक्षा करता है कि लगता है लंबी I/O अनुरोध (और प्रतिक्रिया I/O भी बफर करता है)।

https://github.com/benoitc/gunicorn/blob/master/gunicorn/workers/gthread.py

+0

मैंने कभी भी वेट्रेस का उपयोग नहीं किया है, लेकिन गनिकॉर्न कोड को देखकर यह 'समवर्ती.फ्यूचर' के आसपास एक साधारण रैपर है। https://docs.python.org/3/library/concurrent.futures.html –

उत्तर

1

Gunicorn में पिरोया कार्यकर्ता बफ़र नहीं होता मैं/हे और मुख्य थ्रेड में अनुरोध शरीर नहीं पढ़ता।

मुख्य लूप एसिंक्रोनस रूप से बुला accept() [1] संभालती है, लेकिन फिर सॉकेट तुरंत थ्रेड पूल [2] को प्रस्तुत कर रहा है।

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