2008-11-12 13 views
5

मेरे पास एक j2me क्लाइंट है जो कुछ चंकित एन्कोडेड डेटा को वेबसर्वर पर पोस्ट करेगा। मैं अजगर में डेटा को संसाधित करना चाहता हूं। लिपि को एक सीजीआई के रूप में चलाया जा रहा है, लेकिन स्पष्ट रूप से अपाचे एक सीजीआई लिपि में एक खंडित एन्कोडेड पोस्ट अनुरोध को मना कर देगा। जहां तक ​​मैं mod_python देख सकता था, डब्लूएसजीआई और फास्टसीजीआई भी नहीं जाते हैं।पाइथन (या अपाचे के तहत जेनेरिक सीजीआई) में छिद्रित एन्कोडेड HTTP POST अनुरोध

मैं अगर वहाँ एक अजगर स्क्रिप्ट प्रक्रिया इनपुट के इस प्रकार के लिए एक तरीका है पता करना चाहते हैं। मैं किसी भी सुझाव के लिए खुला रहा हूँ (जैसे एक confoguration apache2 में स्थापित करने कि मात्रा को इकट्ठा होता है, एक स्टैंडअलोन अजगर सर्वर है कि एक ही करना होगा, आदि) मैं काफी googling के एक बिट किया है और प्रयोग करने योग्य कुछ भी है, जो नहीं मिला बोहुत अजीब।

मुझे पता है कि सर्वर पक्ष पर जावा का सहारा एक समाधान होगा, लेकिन मैं कल्पना नहीं कर सकता कि इसे अपाचे + पायथन के साथ हल नहीं किया जा सकता है।

+0

मुझे कॉन्फ़िगरेशन के साथ इसे हल करने में खुशी होगी, इसलिए अगर आपको पता है कि अपाचे 2 (.2) में सेट अप और कैसे सेट किया जाए तो कृपया मुझे बताएं। –

+0

मामूली विन्यास परिवर्तन के साथ ऐसा करना वास्तव में संभव है।विवरण के लिए मेरा जवाब देखें। –

उत्तर

2

मैं उपयोग कहेंगे अपने http श्रोता के निर्माण के लिए मुड़ ढांचा। मुड़कर चंकित एन्कोडिंग का समर्थन करता है।

http://python.net/crew/mwh/apidocs/twisted.web.http._ChunkedTransferEncoding.html

आशा इस मदद करता है।

+0

लिंक टूट गया है – bubakazouba

1

शायद यह एक विन्यास मुद्दा है? डीजेंगो को अपाचे के साथ mod_python, WSGI और FastCGI द्वारा अग्रसर किया जा सकता है और यह फ़ाइल अपलोड स्वीकार कर सकता है।

2

अपाचे 2.2 mod_cgi मेरे लिए ठीक काम करता है, अपाचे पारदर्शी रूप से अनुरोध को अनचाहे करता है क्योंकि यह CGI एप्लिकेशन को पास किया जाता है।

डब्लूएसजीआई वर्तमान में खंडित अनुरोधों को अस्वीकार करता है, और mod_wsgi वास्तव में उन्हें 411 प्रतिक्रिया के साथ अवरुद्ध करता है। यह डब्लूएसजीआई 2.0 के लिए ड्राइंग बोर्ड पर है। लेकिन कुछ ऐसा खोजने पर बधाई जो चंक अनुरोध करता है, मैंने पहले कभी नहीं देखा है!

6

मैं एक जे 2 एमई ग्राहक एक अजगर/रूबी बैकएंड से बात कर के साथ एक साल पहले ठीक उसी समस्या थी। एकमात्र समाधान मैंने पाया कि की आवश्यकता नहीं है अनुप्रयोग या आधारभूत संरचना स्तर परिवर्तन mod_proxy की अपेक्षाकृत अज्ञात विशेषता का उपयोग करना था।

Mod_proxy में आने वाले (खंडित) अनुरोधों को बफर करने की क्षमता है, और फिर उन्हें प्रॉक्सी बैकएंड पर पास करने से पहले सामग्री-लंबाई शीर्षलेख के साथ एक अनुरोध के रूप में फिर से लिखना है। साफ चाल यह है कि आप एक छोटी प्रॉक्सी कॉन्फ़िगरेशन बना सकते हैं जो अनुरोध को उसी अपाचे सर्वर पर वापस भेजता है। यानि पोर्ट 80 पर आने वाले खंडित अनुरोध को लें, इसे "डिचंक" करें, और उसके बाद इसे पोर्ट 81 पर अपने गैर-HTTP 1.1 अनुपालन सर्वर पर पास करें।

मैंने इस कॉन्फ़िगरेशन को एक वर्ष से अधिक समय तक उत्पादन में उपयोग किया समस्या का। यह इस तरह एक छोटे से दिखता है:

ProxyRequests Off 

<Proxy http://example.com:81> 
    Order deny,allow 
    Allow from all 
</Proxy> 

<VirtualHost *:80> 
    SetEnv proxy-sendcl 1 
    ProxyPass/http://example.com:81/ 
    ProxyPassReverse/http://example.com:81/ 
    ProxyPreserveHost On 
    ProxyVia Full 

    <Directory proxy:*> 
    Order deny,allow 
    Allow from all 
    </Directory> 

</VirtualHost> 

Listen 81 

<VirtualHost *:81> 
    ServerName example.com 
    # Your Python application configuration goes here 
</VirtualHost> 

मैं भी समस्या का पूरा writeup मिल गया है और मेरे समाधान on my blog विस्तृत।

+0

+1 अच्छा खोज! मुझे एहसास नहीं हुआ कि mod_proxy ऐसा कर सकता है। –

+0

मैंने उबंटू 8.04/अपाचे 2.2.8 पर एक ही कॉन्फ़िगरेशन का उपयोग किया लेकिन मुझे यह त्रुटि प्रॉक्सी के लॉग में मिलती है: [त्रुटि] प्रॉक्सी: चंकेड ट्रांसफर-एन्कोडिंग समर्थित नहीं है – sharjeel

+0

ब्लॉग से लिंक टूटा हुआ है – bubakazouba

2

आप क्या आप mod_python के साथ चाहते हैं नहीं कर सकते। यदि आप संस्करण 3.0 का उपयोग कर रहे हैं तो आप इसे mod_wsgi के साथ कर सकते हैं। हालांकि आपको डब्लूएसजीआई 1.0 विनिर्देश के बाहर कदम उठाना है क्योंकि डब्लूएसजीआई प्रभावी ढंग से खंडित अनुरोध सामग्री को प्रतिबंधित करता है।

http://code.google.com/p/modwsgi/wiki/ChangesInVersion0300 में WSGIChunkedRequest के लिए खोजें जो आवश्यक है।

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