मैं एक डेमॉन जहां मैं एक HTTP सर्वर एम्बेड करने के लिए की जरूरत पर काम कर रहा हूँ। मैं BaseHTTPServer है, जो जब मैं अग्रभूमि में इसे चलाने के लिए, यह ठीक काम करता है के साथ क्या करने की कोशिश कर रहा हूँ, लेकिन जब मैं कोशिश करते हैं और पृष्ठभूमि में डेमॉन कांटे से यह कार्य करना बंद कर। मेरा मुख्य अनुप्रयोग काम करना जारी रखता है, लेकिन बेसएचटीटीपीएसवर नहीं करता है।Daemonizing अजगर के BaseHTTPServer
मेरा मानना है कि इस तथ्य को BaseHTTPServer STDOUT और STDERR को लॉग डेटा भेजता है के साथ क्या करने के लिए कुछ नहीं है। मैं उन फ़ाइलों को रीडायरेक्ट कर रहा हूं।
# Start the HTTP Server
server = HTTPServer((config['HTTPServer']['listen'],config['HTTPServer']['port']),HTTPHandler)
# Fork our process to detach if not told to stay in foreground
if options.foreground is False:
try:
pid = os.fork()
if pid > 0:
logging.info('Parent process ending.')
sys.exit(0)
except OSError, e:
sys.stderr.write("Could not fork: %d (%s)\n" % (e.errno, e.strerror))
sys.exit(1)
# Second fork to put into daemon mode
try:
pid = os.fork()
if pid > 0:
# exit from second parent, print eventual PID before
print 'Daemon has started - PID # %d.' % pid
logging.info('Child forked as PID # %d' % pid)
sys.exit(0)
except OSError, e:
sys.stderr.write("Could not fork: %d (%s)\n" % (e.errno, e.strerror))
sys.exit(1)
logging.debug('After child fork')
# Detach from parent environment
os.chdir('/')
os.setsid()
os.umask(0)
# Close stdin
sys.stdin.close()
# Redirect stdout, stderr
sys.stdout = open('http_access.log', 'w')
sys.stderr = open('http_errors.log', 'w')
# Main Thread Object for Stats
threads = []
logging.debug('Kicking off threads')
while ...
lots of code here
...
server.serve_forever()
Am मैं गलत यहाँ कुछ कर रही है या किसी भी तरह BaseHTTPServer daemonized बनने से रोका जाता है: यहाँ कोड का टुकड़ा है?
संपादित करें: अपडेट किया गया कोड अतिरिक्त, पहले से लापता कोड प्रवाह और मेरी काँटेदार, पृष्ठभूमि डेमॉन में है कि log.debug शो मैं कांटा के बाद कोड मार रहा प्रदर्शित करने के लिए।
यह वास्तव में बीएडी क्यों है? कृपया, यह Google में शीर्ष परिणामों में से एक है ... http के लिए प्रीबिल्ट पायथन पुस्तकालय की एक बड़ी मात्रा है, इसलिए उनमें से अधिक विवरण अद्भुत भी होंगे। – nsij22