संभव डुप्लिकेट:
Python: single instance of programरोकें एक अजगर स्क्रिप्ट के समवर्ती उदाहरणों चल
मैं समवर्ती उदाहरणों चल एक काम समय लेता है जब लांचर से पूरा करने के लिए से एक क्रॉन जॉब को रोकने के लिए की जरूरत है मध्यान्तर। मैं इसे प्राप्त करने के लिए झुंड अवधारणा का उपयोग करने की कोशिश कर रहा हूं, लेकिन fcntl मॉड्यूल जिस तरह से मैं अपेक्षा करता हूं उससे व्यवहार नहीं कर रहा हूं।
किसी को भी मुझे बता सकते हैं क्यों यह दो समवर्ती उदाहरणों को रोकने के लिए काम करता है: क्यों यह काम नहीं करता
import sys
import time
import fcntl
file_path = '/var/lock/test.py'
file_handle = open(file_path, 'w')
try:
fcntl.lockf(file_handle, fcntl.LOCK_EX | fcntl.LOCK_NB)
print 'no other instance is running'
for i in range(5):
time.sleep(1)
print i + 1
except IOError:
print 'another instance is running exiting now'
sys.exit(0)
और:
import sys
import time
import fcntl
def file_is_locked(file_path):
file_handle = open(file_path, 'w')
try:
fcntl.lockf(file_handle, fcntl.LOCK_EX | fcntl.LOCK_NB)
return False
except IOError:
return True
file_path = '/var/lock/test.py'
if file_is_locked(file_path):
print 'another instance is running exiting now'
sys.exit(0)
else:
print 'no other instance is running'
for i in range(5):
time.sleep(1)
print i + 1
http://stackoverflow.com/questions/380870/python-single-instance-of-program के संभावित dup। जो सभी कष्टप्रद क्रॉस-प्लेटफॉर्म मुद्दों से निपटने के लिए [tendo] (http://pypi.python.org/pypi/tendo) नामक लाइब्रेरी का भी विस्तार करता है। बेशक यह जवाब नहीं देता है "एक काम क्यों करता है लेकिन बी नहीं?" सवाल है, लेकिन यह अंतर्निहित प्रश्न हल करता है "मुझे यह कैसे करना चाहिए?" – abarnert