में कक्षा-आधारित विचार aiohttp लाइब्रेरी में फ़ंक्शंस के बजाय क्लास-आधारित हैंडलर का उपयोग करने का सही तरीका क्या है? मैं Django में कक्षाओं के रूप में हैंडलर लिखने के लिए उपयोग किया जाता हूं, इसलिए मुझे आश्चर्य है कि aiohttp में इसे सही तरीके से कैसे किया जाए?Aiohttp
Q
Aiohttp
6
A
उत्तर
5
मुझे लगता है कि आप कोड का पुन: उपयोग करने के लिए विरासत लागू करने के लिए कक्षा-आधारित हैंडलर का उपयोग करना चाहते हैं।
तकनीकी रूप से aiohttp वेब-हैंडलर कोई भी कोरआउट है जो अनुरोध पैरामीटर स्वीकार करता है और प्रतिक्रिया उदाहरण देता है।
उदाहरण
class BaseView:
def __init__(self, ...):
...
@asyncio.coroutine
def __call__(self, request):
return web.Response()
app.router.add_route('GET', '/', BaseView(...))
के लिए वेब संचालकों पदानुक्रम बनाने के लिए आधार वर्ग के रूप में इस्तेमाल किया जा सकता।
या यहां तक कि
class Handler:
def __init__(self, db):
self._db = db
@asyncio.coroutine
def get_from_db(self, data):
...
@asyncio.coroutine
def handle_a(self, request):
data = yield from self.get_from_db(
self.extract_from_request_a(request))
return web.Response(self.format_data(data))
@asyncio.coroutine
def handle_b(self, request):
data = yield from self.get_from_db(
self.extract_from_request_b(request))
return web.Response(self.format_data(data))
handler = Handler(db)
app.router.add_route('GET', '/a', hadndler.handle_a)
app.router.add_route('GET', '/b', hadndler.handle_b)
संबंधित मुद्दे
- 1. aiohttp web.response body json
- 2. क्या Aiohttp ORM है?
- 3. aiohttp + sqlalchemy: अमान्य लेनदेन वापस
- 4. aiohttp: एकल स्थिर फ़ाइल की सेवा करें
- 5. एकाधिक aiohttp एप्लिकेशन() एक ही प्रक्रिया में चल रहा है?
- 6. Asyncio और aiohttp मार्ग सभी यूआरएल पथ हैंडलर
- 7. पायथन Aiohttp/asyncio - लौटाए गए डेटा को कैसे संसाधित करें
- 8. क्या सॉक्स प्रॉक्सी के साथ aiohttp क्लाइंट का उपयोग करने का कोई तरीका है?
- 9. aiohttp (या अन्य asyncio- आधारित पुस्तकालयों) के साथ टर्ननाडो का उपयोग
- 10. पायथन एओओटीपी अनुरोध बंद कर दिया गया लेकिन यूआरएल का अनुरोध करने के लिए <code>aiohttp</code> का उपयोग करने के लिए
- 11. पाश खत्म होने से पहले पायथन कोरआउट से परिणाम एकत्रित करना
- 12. अजगर 3.4 में
- 13. मुझे पाइथन एसिन्सियो में "टास्क नष्ट कर दिया गया था लेकिन यह लंबित है" क्यों हो रहा है?
- 14. क्या डीजेंगो-चैनल वास्तविक समय गेम के लिए उपयुक्त है?
- 15. पाइथन
- 16. पायथन-एसिन्सियो का उपयोग करते समय मॉड्यूल को अधिभार कैसे करें?
- 17. मैं एसिंक कोरआउट में एक सिंक्रोनस फ़ंक्शन कैसे लपेट सकता हूं?
- 18. asyncio
- 19. asyncio coroutines
- 20. एसिंक सर्वर
- 21. एसिन्सीओ के साथ कई कॉल करना और परिणाम को
- 22. पायथन अनुरोध - धागे/प्रक्रिया बनाम आईओ
फिर भी विचार उदाहरण के लिए पोस्ट (अनुरोध) समारोह को जोड़ने का तरीका नहीं मिलता है। क्या मुझे यूआरएल – vwvolodya
में उपयोग करने के लिए as_view() विधि को कार्यान्वित करना चाहिए मैंने एक उदाहरण पंजीकृत करने के लिए उदाहरण जोड़ा है। कोड प्रत्येक अनुरोध के लिए बेसव्यू को फिर से नहीं बनाता है - मुझे पता चला है कि आमतौर पर हम 'हैंडल' कक्षा के साथ दृष्टिकोण का उपयोग नहीं करते हैं। –
अद्यतन: एक हालिया संस्करण जोड़ा गया [कक्षा आधारित दृश्य] (https://aiohttp.readthedocs.org/en/stable/web.html#class-based-views)। ध्यान दें कि इसमें जटिलताएं हैं, सभी 'एओ-लिब्स' पूरी तरह से इसका समर्थन नहीं करते हैं – nerdwaller