2011-03-11 5 views
5

मेरी एफ़टीपी डाउनलोड स्क्रिप्ट (ftplib पर आधारित) बड़े डाउनलोड पर लटक रही है। रिमोट सर्वर जिसके साथ मैं काम कर रहा हूं, जबकि अत्यधिक विन्यास योग्य (proftpd) दूरस्थ नेटवर्क द्वारा लगाए गए फ़ायरवॉल सीमाओं को पार करने में असमर्थ है।एफ़टीपी नियंत्रण पोर्ट को जीवित रखने के लिए थ्रेडिंग का उपयोग

मैं अपनी कंपनी में निष्क्रिय मोड का उपयोग करने के लिए प्रतिबंधित हूं, यानी यह मेरे लिए एक पोर्ट खोलने के लिए एफ़टीपी सक्रिय मोड की अनुमति नहीं देगा।

तो, मैं निष्क्रिय मोड से फंस गया हूं।

रिमोट सर्वर बड़े डाउनलोड में 10 से 15 मिनट डिस्कनेक्ट हो जाता है।

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

या, क्या बंदरगाह को रखने के लिए पोर्ट 21 (नियंत्रण कनेक्शन) पर उपयोग कर रहे विशिष्ट सॉकेट को नियंत्रित करने का कोई तरीका है जबकि बड़े डाउनलोड पोर्ट nnnnnn पर होता है?

बहुत बहुत धन्यवाद!

उत्तर

6

आप भी इस कोड को जोड़कर टीसीपी KeepAlive सुविधा उपयोग करने के लिए कोशिश कर सकते हैं:

import socket 
ftp.sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) 

टीसीपी KeepAlive के समर्थन अत्यधिक मंच और फ़ायरवॉल निर्भर है - इस प्रकार की कोई गारंटी नहीं है, लेकिन यह इस बात के लिए डिज़ाइन किया गया है उद्देश्य और अतिरिक्त धागा जोड़ने से यह बहुत आसान होगा। आप किस प्लेटफॉर्म पर काम कर रहे हैं?

+0

सुझाव के लिए धन्यवाद! रिमोट बॉक्स एक NAS चल रहा है लिनक्स है। मेरा बॉक्स एक्सपी है; यह रिमोट डेटा को कंपनी के सर्वर पर रखकर स्क्रिप्ट चलाता है। मैं निश्चित रूप से थोड़ा सा शोध करने के बाद आपके सुझाव को आज़मा दूंगा। मुझे एहसास हुआ कि इसमें बेहतर अनाज वाले सॉकेट नियंत्रण के साथ कुछ करना होगा। – EmBee

+0

इसे देखें: http://ltxfaq.custhelp.com/app/answers/detail/a_id/690/~/setting-the-tcp-keepalive-timer-in-windows-nt,-2000-and- xp – weismat

+0

आपका सुझाव काम किया! आपका बहुत बहुत धन्यवाद! अब मैं प्रमाणीकरण के दौरान एक एसएसएच सुरंग का उपयोग कर पासवर्ड सुरक्षा लागू करने में सक्षम हो जाएगा। यह केवल निष्क्रिय मोड में proftpd के साथ अनुमति है, इसलिए मुझे बहुत खुशी है कि आपका कोड सुझाव यह होने की अनुमति देगा। एक बार फिर धन्यवाद। – EmBee

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