के साथ एसएफटीपी/एसएसएच सत्र टाइमआउट को रोकें मैं एक एसएफटीपी सर्वर से कनेक्ट करने के लिए paramiko का उपयोग कर रहा हूं जिस पर मुझे कुछ फ़ाइलों को डाउनलोड और संसाधित करना है।पैरामीको
सर्वर समय समाप्त 5 मिनट के लिए सेट है, लेकिन कुछ दिन ऐसा होता है कि फ़ाइलों के प्रसंस्करण समय समाप्ति से अधिक समय लग सकता है। तो, जब मैं कुछ अन्य फ़ाइलों sftp.chdir(target_dir))
मैं एक अपवाद है कि कनेक्शन का समय समाप्त हो गया है मिल संसाधित करने के लिए सर्वर पर कार्यशील निर्देशिका बदलना चाहते हैं:
फ़ाइल buildbdist.win32eggparamikosftp: //ftp.py, लाइन 138, _write_all में बढ़ा EOFError()
इस का मुकाबला करने के लिए मैंने सोचा था कि जीवित रखने को सक्रिय करने के लिए सबसे अच्छा विकल्प तो मैं 30 सेकंड के लिए सेट करने के लिए परिवहन पर इस्तेमाल किया "set_keepalive" होगा:
ssh = paramiko.SSHClient()
ssh.set_missing_hostkey_policy(paramiko.AutoAddPolicy())
ssh.connect(ssh_server, port=ssh_port, username=ssh_user, password=password)
transport = ssh.get_transport()
transport.set_keepalive(30)
sftp = transport.open_sftp_client()
लेकिन कुछ भी नहीं बदलता है। परिवर्तन का कोई प्रभाव नहीं पड़ा है। मैं अगर मैं set_keepalive
की अवधारणा गलत समझ रहा हूँ यहाँ या हो सकता है सर्वर (जिस पर मेरे पास कोई उपयोग कर सकते है) पर ध्यान नहीं देता जिंदा पैकेट रख पता नहीं है।
इस इस समस्या का मुकाबला करने के लिए सही रास्ता नहीं है या मैं एक अलग दृष्टिकोण की कोशिश करनी चाहिए? मुझे सत्र को जीवंत रखने के लिए सर्वर पर कुछ ls
कमांड "मैन्युअल रूप से" भेजने का विचार पसंद नहीं है।
keepalive पैकेट अपने सर्वर अनदेखी कर रहे हैं। वे केवल समय से नेटवर्क कनेक्शन रखने के लिए हैं। – JimB