2011-11-15 12 views
7

मैं एक Django वेब एप्लिकेशन लिख रहा हूँ। अभी तक, Django does not support Python 3। मेरे वेब एप्लिकेशन के प्रयोजनों के लिए, और अधिक विस्तार के बिना, मुझे अनिवार्य रूप से कुछ पुस्तकालयों का उपयोग करने की आवश्यकता है जो केवल पायथन 3 का समर्थन करते हैं। यह कहने के लिए पर्याप्त है कि बहुत अधिक शोध के बाद 2.x विकल्प नहीं मिला।पायथन 2.x प्रोग्राम को पायथन 2.x के भीतर से कॉल करने का सबसे अच्छा तरीका क्या है?

तो मेरा सवाल यह है: मुझे इसके बारे में कैसे जाना चाहिए?

मैं दोनों अजगर 2 और 3 मेरे सर्वर पर स्थापित किया है, और मैं अजगर 3 कोड लिखा और कहा जा प्रतीक्षारत है। मैं बस subprocess मॉड्यूल का उपयोग कर विचार कर रहा था, जो कमांड लाइन से पाइथन 3 को प्रभावी ढंग से कॉल कर रहा था, लेकिन सवाल यह है कि, क्या यह सबसे अच्छी विधि है या क्या यहां एक सर्वोत्तम अभ्यास है जिसका मैं उपयोग कर सकता हूं? subprocess का उपयोग करना मेरे लिए बहुत हैकिश लगता है। मुझे गलत मत समझो, मैं हैकिश के साथ ठीक हूं, मैं बस यह सुनिश्चित करना चाहता हूं कि इसके अलावा मुझे कुछ भी नहीं करना चाहिए।

+0

[cherrypy] (http://cherrypy.org/) का उपयोग करने और पाइथन 3 में पूरी चीज करने के बारे में कैसे? –

+0

xmlrpc – gecco

+1

उपप्रोसेसिंग के लिए एक आसान विकल्प हो सकता है क्या आपने यह देखने के लिए 3to2 प्रोग्राम का उपयोग करने का प्रयास किया है कि अनिर्दिष्ट पायथन 3-केवल पुस्तकालयों को स्वचालित रूप से पाइथन 2 में परिवर्तित किया जा सकता है या नहीं? क्या आपने मार्टिन वॉन लॉविस '[डीजेगो से पाइथन 3] (https://bitbucket.org/loewis/django-3k/) का उपयोग करने की कोशिश की है, तो सब कुछ पाइथन 3 में चल रहा है? –

उत्तर

6

के बाद से अजगर 3 और अजगर 2 दुभाषियों पूरी तरह से अलग कर रहे हैं और निष्पादनयोग्य subprocess का उपयोग अन्य है सबसे अच्छा अभ्यास से एक आह्वान करने के लिए, अलग लाइब्रेरी को अपने सिस्टम पर स्थापित किया है। यह बिल्कुल एक हैक नहीं है। उनके बीच डेटा पारित करने के कई तरीके हैं लेकिन दो दुभाषियों को अलग प्रक्रियाओं के रूप में चलाया जाना चाहिए।

उस ने कहा, आपको एक दुभाषिया प्रक्रिया शुरू करने के साथ जुड़े स्टार्टअप समय को ध्यान में रखना होगा। यह दो प्रक्रियाओं के बीच डेटा को पारित करने के लिए वापस आता है। यदि आपका पायथन 2 कोड अक्सर पाइथन 3 रूटीन को कॉल करने जा रहा है, तो आपको पाइथन 3 प्रोग्राम को डिमन के रूप में स्थापित करने की आवश्यकता हो सकती है। लेकिन आप इसे लॉन्च करने के लिए अभी भी subprocess का उपयोग करेंगे।

+0

बहुत बढ़िया। बहुत बहुत धन्यवाद। इस प्रक्रिया के रूप में इसे खत्म करने की आवश्यकता है ... यह कुछ विचार लेगा। जब उपयोगकर्ता साइन अप करता है तो इसे केवल एक बार बुलाया जाना चाहिए, इसलिए इसे अल्प अवधि में होने की आवश्यकता नहीं हो सकती है, लेकिन सिद्धांत रूप में, यदि मेरा वेबपैप उपयोगी हो, तो यह एक सुविधाजनक बात हो सकती है। इंटरनेट कनेक्शन वास्तव में धीमा होने पर भी पूरी प्रक्रिया को 5 सेकंड से अधिक नहीं लेना चाहिए। –

1

3.x प्रोग्राम को एक अलग सेवा के रूप में चलाएं और फिर किसी प्रकार की आरपीसी तंत्र का उपयोग करके कनेक्ट करें?

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

  • कोई संबंधित समस्या नहीं^_^