एक साधारण अजगर वेब सेवा बनाने का सबसे अच्छा तरीका [बंद]


137

मैं वर्षों से अजगर का उपयोग कर रहा हूं, लेकिन मुझे अजगर वेब प्रोग्रामिंग के साथ बहुत कम अनुभव है। मैं एक बहुत ही सरल वेब सेवा बनाना चाहता हूं जो मेरी कंपनी के भीतर उपयोग के लिए मौजूदा अजगर स्क्रिप्ट से कुछ कार्यक्षमता को उजागर करती है। यह संभवतः सीएसवी में परिणाम लौटाएगा। कुछ पाने के लिए सबसे तेज़ तरीका क्या है? यदि यह आपके सुझाव को प्रभावित करता है, तो मैं संभवतः सड़क के नीचे इस पर अधिक कार्यक्षमता जोड़ रहा हूं।


यह एक अच्छा त्वरित नमूना दिखाता है: Dreamsyssoft.com/blog/blog.php?/archives/…
ट्राइटन मैन

github.com/pramttl/webipy मैंने यह उपकरण लिखा था जो स्वचालित रूप से आपके अजगर कार्यों को वेब एंडपॉइंट में बदल देता है। आपकी फ़ंक्शन परिभाषाओं पर इसके कुछ प्रतिबंध हैं, लेकिन अब तक आपके अजगर कार्यों के लिए वेब समापन बिंदु उत्पन्न करने का सबसे तेज़ तरीका है। Infact webipy django का उपयोग करता है, लेकिन यह स्वचालित रूप से आपके सभी पायथन कार्यों के लिए आवश्यक django विचार उत्पन्न करता है। आपको कोई "वेब कोड" लिखने की ज़रूरत नहीं है।
प्रांजल मित्तल

जवाबों:


55

वेर्केजग पर एक नजर है । WSGI अनुप्रयोगों के लिए विभिन्न उपयोगिताओं के एक सरल संग्रह के रूप में Werkzeug शुरू हुआ और सबसे उन्नत WSGI उपयोगिता मॉड्यूल में से एक बन गया है। इसमें एक शक्तिशाली डीबगर, पूर्ण विशेषताओं वाला अनुरोध और प्रतिक्रिया ऑब्जेक्ट्स, इकाई टैग्स को संभालने के लिए HTTP उपयोगिताओं, कैश कंट्रोल हेडर, HTTP तिथियों, कुकी हैंडलिंग, फ़ाइल अपलोड, एक शक्तिशाली यूआरएल रूटिंग सिस्टम और समुदाय योगदान वाले ऐडऑन मॉड्यूल का एक गुच्छा शामिल है।

इसमें http के साथ काम करने के लिए बहुत सारे शांत उपकरण शामिल हैं और इसका फायदा यह है कि आप इसे विभिन्न वातावरणों में wsgi (cgi, fcgi, apache / mod_wsgi या डीबगिंग के लिए एक सादे सरल अजगर सर्वर के साथ) का उपयोग कर सकते हैं।


2
मैंने इसके लिए werkzeug का उपयोग किया। मुझे प्यार है कि यह कितना लचीला है। सिफारिश के लिए धन्यवाद।
जेरेमी कैंटरेल

1
इससे पहले कि मैं यह करने के लिए मैंने तीन अन्य वेब फ्रेमवर्क के बारे में कोशिश की। यह पहला है जिसे मैं बॉक्स से बाहर कर सकता हूं। महान आरईसी!
बेनडुंडी

26

web.py शायद वहाँ से बाहर सबसे सरल वेब फ्रेमवर्क है। "नंगे" सीजीआई सरल है, लेकिन जब आप एक ऐसी सेवा बनाने की बात करते हैं जो वास्तव में कुछ करती है।

"नमस्ते दुनिया!" Web.py के अनुसार, नंगे CGI संस्करण की तुलना में अधिक लंबा नहीं है, लेकिन इसमें URL मैपिंग, HTTP कमांड भेद, और क्वेरी पैरामीटर पार्सिंग को मुफ्त में जोड़ा गया है :

import web

urls = (
    '/(.*)', 'hello'
)
app = web.application(urls, globals())

class hello:        
    def GET(self, name):
        if not name: 
            name = 'world'
        return 'Hello, ' + name + '!'

if __name__ == "__main__":
    app.run()

आह हाँ, web.py बहुत अच्छा लगता है। अब तक, वेब साइट < webpy.org > कहती है: 500 - आंतरिक सर्वर त्रुटि अन्यथा, हमारा कोड मेरे लिए काम नहीं करता है: ... ऐप = web.application (urls, globals ()) AttractError: 'मॉड्यूल' ऑब्जेक्ट कोई विशेषता नहीं है 'आवेदन'
bortzmeyer

1
वेब साइट वापस आ गई है। आप अपने संस्करण की जांच करना चाहते हैं, क्योंकि टिम का कोड सही लगता है।
चार्ली मार्टिन

1
मैं इसमें भी भागा। यदि आप उबंटू चल रहे हैं, तो 8.10 रिपॉजिटरी में जहाज का संस्करण काफी पुराना है। वेबसाइट से नवीनतम पकड़ो या easy_install का उपयोग करें और आपको सुनहरा होना चाहिए।
बुलेवार्ड

webpy.org (आधिकारिक web.py वेबसाइट) के अनुसार yandex web.py (उनका 70 मिलियन पेज व्यू / दिन है) का उपयोग कर रहा है .. इसलिए यह कुशल होना चाहिए ..
प्रोग्रामर

मुझे ठीक इसी की आवश्यकता थी। सरल, सीधे बिंदु पर और प्रयोग करने में आसान।
गुइसीम

15

पायथन लिपि को ऑनलाइन प्राप्त करने का सबसे सरल तरीका CGI का उपयोग करना है:

#!/usr/bin/python

print "Content-type: text/html"
print

print "<p>Hello world.</p>"

उस कोड को एक स्क्रिप्ट में रखें जो आपके वेब सर्वर सीजीआई निर्देशिका में रहता है, इसे निष्पादन योग्य बनाता है, और इसे चलाता है। cgiमॉड्यूल उपयोगी उपयोगिताओं जब आप उपयोगकर्ता से पैरामीटर स्वीकार करने की जरूरत है की एक संख्या है।


जब यह विधि सुनिश्चित करें कि हैंडलर अपाचे में अजगर लिपियों के लिए उचित रूप से सेटअप है, उदाहरण: AddHandler cgi-script .cgi .pl .py
Tegan Snyder

1
बिंदु अपाचे जैसे किसी भी अतिरिक्त वेब-सर्वर के बिना ऐप चलाने का है।
AstraSerg

12

रॉ CGI एक तरह का दर्द है, Django एक तरह का हैवीवेट है। कई सरल, लाइटर चौखटे हैं, जैसे चेरी । यह थोड़ा देखने लायक है।


2
चेरी के लिए +1। यह सही है जब आप Django की तुलना में कुछ सरल चाहते हैं।
स्टीव लैश

9

को देखो WSGI संदर्भ कार्यान्वयन । आपके पास पहले से ही अपने पायथन पुस्तकालयों में है। यह काफी सरल है।


जैसा कि मैंने कहा, अजगर वेब प्रोग्रामिंग के साथ मेरा अनुभव बहुत सीमित है, लेकिन एक WSGI ऐप "स्टैंडअलोन" चलाया जा सकता है, बिना Apache जैसे वेब सर्वर के बिना?
जेरेमी कैंटरेल 15

हाँ। पूरी तरह से अकेले खड़े। बहुत अच्छा काम करता है। आप अपाचे या विशेष विशेषाधिकार के बिना, हालांकि, पोर्ट 80 का उपयोग नहीं कर सकते - लेकिन यह एक ओएस सुरक्षा मुद्दा है।
S.Lott

4

यदि आप "वेब सेवा" से मतलब रखते हैं तो अन्य प्रोग्राम्स सिम्पलेक्स XMLRPCServer द्वारा एक्सेस किया जाता है जाना आपके लिए सही हो सकता है। यह संस्करण 2.2 के बाद से हर पायथन स्थापित के साथ शामिल है।

साधारण मानव सुलभ चीज़ों के लिए, मैं आमतौर पर पायथन सिम्पल टीटीपीएसर्वर का उपयोग करता हूं जो कि हर इंस्टॉल के साथ आता है। जाहिर है आप भी क्लाइंट प्रोग्राम्स द्वारा SimpleHTTPServer का उपयोग कर सकते हैं।


2

यदि आप एक अच्छा वेब ढांचा प्राप्त करते हैं तो जीवन सरल है। Django में वेब सेवाएं आसान हैं। अपने मॉडल को परिभाषित करें, अपने CSV दस्तावेज़ों को लौटाने वाले दृश्य फ़ंक्शन लिखें। टेम्प्लेट छोड़ें।


2

यदि आपको SOAP / WSDL के अर्थ में "वेब सेवा" से मतलब है, तो आप देखना चाहते हैं अजगर और साबुन का उपयोग करके एक WSDL बनाना


मुझे सबसे अनौपचारिक अर्थ में "वेब सेवा" से मतलब है। Http के माध्यम से डेटा प्रदान करना जो किसी अन्य ऐप द्वारा उपभोग किया जाएगा। जैसा कि मैंने सवाल में कहा, यह संभवतः csv होगा।
जेरेमी कैंटरेल

डब्लूएसडीएल संभवत: सबसे अधिक मानकों पर आधारित होगा ... और इसका उपभोग करने के लिए होगा ...
थुफ़िर

1

शायद मुड़ http://twistedmatrix.com/trac/


मेरे पास मुड़ के खिलाफ कुछ भी नहीं है, लेकिन यह वही है जो मैं (भारी निर्भरता) से दूर रहना चाहता था।
जेरेमी कैंटरेल

@ जेरेमी: मुड़ भारी नहीं है।
नोसकोलो

मैं मानता हूं कि यह पहली नज़र में थोड़ा कठिन हो सकता है, लेकिन यह सुनिश्चित नहीं करना चाहिए कि 'भारी निर्भरता' से आपका क्या मतलब है। यह मानक अजगर से संकुल का उपयोग करता है जहाँ तक मुझे पता है। मॉड्यूल के अंदर बहुत सारे मूविंग पार्ट्स होते हैं लेकिन साधारण चीजों के लिए आपको ऐसा करने की आवश्यकता नहीं है।
मब्बीट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.