आपके प्रश्न के शब्दों में, मैं मानता हूं कि आपके पास एक स्थानीय मशीन और एक रिमोट मशीन है, जहां आप दो फ़ाइलों को अपडेट करते हैं - एक पायथन स्क्रिप्ट और एक बैश स्क्रिप्ट। दोनों फाइलें एसवीएन नियंत्रण में हैं, और दोनों मशीनों में एक ही एसवीएन सर्वर का उपयोग होता है।
मुझे खेद है कि आपके ग्रिड सिस्टम के लिए मेरे पास कोई सलाह नहीं है, लेकिन मुझे कुछ सामान्य बिंदुओं को सूचीबद्ध करने की आवश्यकता है जिन्हें मैंने किसी भी तैनाती के लिए महत्वपूर्ण पाया है।
उत्पादन परिवर्तन को कॉन्फ़िगरेशन परिवर्तनों तक सीमित रखें । आप लिखते हैं कि आपको "सर्वर पर डेटासेट पथ का उपयोग करना है"; यह मेरे लिए आपको लगता है जैसे आपके पाइथन लिपि में हार्डकोड किए गए रास्ते हैं। यह एक अच्छा विचार नहीं है, ठीक है क्योंकि आपको उन रास्तों को हर दूसरी मशीन में बदलना होगा जहां आप स्क्रिप्ट को स्थानांतरित करते हैं। यदि आप एसवीएन में उन परिवर्तनों को वापस करते हैं, तो आपकी स्थानीय मशीन पर आपके पास दूरस्थ पथ होंगे, और आगे भी ... (क्या होगा यदि केवल पथ नहीं हैं, लेकिन पासवर्ड भी हैं? आपके पास SVN में उत्पादन पासवर्ड नहीं होना चाहिए? सर्वर।)
इसलिए, .ini
फ़ाइल में पथ और अन्य सेटअप informations रखें और इसे पढ़ने के लिए, या फ़ाइल का उपयोग करने और json मॉड्यूल का उपयोग करने के लिए configParser का .json
उपयोग करें । फ़ाइल की एक प्रतिलिपि स्थानीय रूप से और एक दूरस्थ रूप से, दोनों एक ही पथ के नीचे, दोनों बिना SVN नियंत्रण के रखें, और बस उस कॉन्फ़िगरेशन फ़ाइल में पथ को पाइथन स्क्रिप्ट में रखें (या इसे कमांड लाइन से प्राप्त करें यदि आप दोनों को नहीं रख सकते हैं उसी पथ के तहत विन्यास)।
जितना संभव हो कॉन्फ़िगरेशन को छोटा रखें । कोई भी कॉन्फ़िगरेशन आपके एप्लिकेशन का एक "मूविंग पार्ट" है, और किसी भी सिस्टम के मूविंग पार्ट्स के कम मजबूत होने की संभावना है। किसी चीज़ का एक अच्छा संकेतक जो कॉन्फ़िगरेशन में है, ठीक यही है कि आपको हर बार कोड को स्थानांतरित करने पर इसे संपादित करना होगा; जिन चीजों को संपादन की आवश्यकता नहीं है, वे कोड में स्थिरांक के रूप में रह सकते हैं।
अपनी तैनाती को स्वचालित करें । आप इसे अपने स्थानीय मशीन पर बैश स्क्रिप्ट के माध्यम से कर सकते हैं; ध्यान दें कि आप कर सकते हैं एक दूरस्थ मशीन पर कोई आदेश चला के माध्यम से ssh
। उदाहरण के लिए:
svn export yourprojectpath /tmp/exportedproject
tar czf /tmp/yourproject.tgz /tmp/exportedproject
scp /tmp/myproject.tgz youruser@remotemachine:~/dev
## Remote commands are in the right hand side, between ''
ssh youruser@remotemachine 'tar xzf ~/dev/yourproject.tgz'
ssh youruser@remotemachine 'qsub ~/dev/yourproject/script.py'
इस काम के लिए, आपको अपने स्थानीय और दूरस्थ मशीन के बीच स्थापित, सार्वजनिक / निजी कुंजी के आधार पर पासवर्ड रहित लॉगिन की आवश्यकता है ।
यदि आपको इससे अधिक की आवश्यकता है, तो आप पायथन फैब्रिक या उच्च-स्तरीय व्यंजनों का उपयोग करने के बारे में सोच सकते हैं ।