2012-09-01 12 views
7

मेरे पास एक पायथन स्क्रिप्ट है जिसे मैं केवल मशीन पर चलने की अनुमति देना चाहता हूं। मैं इसे "त्रुटि, पहले से चल रहा है" जैसे कुछ प्रिंट करना चाहता हूं, अगर यह पहले से चल रहा है, चाहे वह पृष्ठभूमि में या किसी भिन्न एसएसएच सत्र में चल रहा हो। यह मैं कैसे करूंगा? मेरी स्क्रिप्ट यहाँ है।पायथन लिपि के केवल एक उदाहरण की अनुमति दें?

import urllib, urllib2, sys 
num = sys.argv[1] 
print 'Calling' 
phones = [ 
'http://phone1/index.htm', 
'http://phone2/index.htm', 
'https://phone3/index.htm', 
'https://phone4/index.htm', 
'https://phone5/index.htm' 
] 
data = urllib.urlencode({"NUMBER":num, "DIAL":"Dial", "active_line":1}) 
while 1: 
    for phone in phones: 
     try: 
      urllib2.urlopen(phone,data) # make call 
      urllib2.urlopen(phone+"?dialeddel=0") # clear logs 
     except: pass 

पीएस। यदि मैं महत्वपूर्ण हूं तो मैं CentOS 5 का उपयोग कर रहा हूं।

उत्तर

3
  1. आप फ़ाइल पर लॉक लागू कर सकते हैं।
  2. निष्पादन की शुरुआत में एक temp फ़ाइल बनाएं और जांचें कि स्क्रिप्ट चलाने से पहले यह फ़ाइल मौजूद है या नहीं।

जवाब- Check to see if python script is running

+0

तुम सिर्फ एक लिंक पोस्ट करने के लिए जा रहे हैं, आप इसे से एक सा रूप में अच्छी तरह उद्धृत करने के लिए कर सकते हैं। – icktoofay

+1

टिप के लिए धन्यवाद। – fatrock92

+0

इसके बारे में बात यह है कि स्क्रिप्ट एक अनंत लूप है, इसलिए यह कभी भी उस स्क्रिप्ट के अंत तक नहीं पहुंच पाएगा जहां लॉक हटा दिया गया है। –

0

आप जैसे का उपयोग कर किसी मौजूदा फ़ाइल को लॉक कर सकता के लिए इस पोस्ट का संदर्भ लें आपकी स्क्रिप्ट की शुरुआत में flock। फिर, यदि एक ही स्क्रिप्ट दो बार चलती है, तो नवीनतम शुरूआत अवरुद्ध होगी। this question भी देखें।

+0

इसके बारे में बात यह है कि स्क्रिप्ट एक अनंत लूप है, इसलिए यह कभी भी उस स्क्रिप्ट के अंत तक नहीं पहुंच पाएगा जहां लॉक हटा दिया गया है। –

+0

आप 'सिगरम' या 'सिग्क्विट' के लिए एक हैंडलर जोड़ सकते हैं जो एक लूपिंग स्थिति के रूप में इस्तेमाल किए गए एक फ्लेग को साफ़ करता है। –

+0

क्या आप मुझे बता सकते हैं कि यह कैसे करें और इसका क्या अर्थ है? जैसा कि मैं पाइथन –

2

आप के साथ single पैकेज इंस्टॉल कर सकते हैं जो एक सलाहकार लॉक का उपयोग करेगा ताकि यह सुनिश्चित किया जा सके कि कमांड लॉक फ़ाइलों को छोड़ दिए बिना केवल एक ही कमांड चलाएगा।

आप इस तरह अपनी स्क्रिप्ट पर यह आह्वान कर सकते हैं:

single.py -c long-running-script arg1 arg2 
+0

पीआईपी कमांड नहीं मिला। मैं सेंटो पर यह कैसे करूँगा? Yum –

+0

के साथ कोई पैकेज सिंगल नहीं है आपको पहले 'sudo easy_install pip' करना पड़ सकता है। फिर पीआईपी स्वचालित रूप से यहां से एक पैकेज डाउनलोड करेगा: http://pypi.python.org/pypi/single/ – aculich

+0

पाइप स्थापित करने के बाद, फिर पाइप इंस्टॉल सिंगल करना, मुझे यह http://pastebin.com/6MTmHkMT –

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