मैं पाइथन परियोजना में सभी लिंक का परीक्षण करने के लिए http.server
का उपयोग करने का प्रयास कर रहा हूं। अगर मैं अपनी स्क्रिप्ट चलाने से पहले सर्वर शुरू करता हूं, तो मैं अपनी स्क्रिप्ट को काम करने के लिए प्राप्त कर सकता हूं, और जब टर्मिनल विंडो बंद करता है तो सर्वर बंद हो जाता है। लेकिन मैं वास्तव में स्क्रिप्ट को सर्वर शुरू करने और रोकने के लिए पसंद करूंगा।मैं Python स्क्रिप्ट के भीतर से SimpleHTTPServer को कैसे मारूं?
मैंने बस सर्वर शुरू करने के लिए एक टेस्ट स्क्रिप्ट बनाई, एक पृष्ठ प्राप्त किया और सर्वर साबित कर रहा है, और फिर सर्वर को रोकें। मुझे सर्वर की पिड नहीं मिल रही है। जब मैं इस स्क्रिप्ट को स्क्रिप्ट चलाने के बाद रिपोर्ट करता हूं, तो मुझे एक संदेश मिलता है कि ऐसी कोई प्रक्रिया नहीं है; लेकिन सर्वर अभी भी चल रहा है।
मैं सर्वर के लिए सही पिड कैसे प्राप्त करूं, या अधिक आम तौर पर मैं स्क्रिप्ट से सर्वर को कैसे रोकूं?
import os
import requests
from time import sleep
# Start server, in background.
print("Starting server...")
os.system('python -m http.server &')
# Make sure server has a chance to start before making request.
sleep(1)
print "Server pid: "
os.system('echo $$')
url = 'http://localhost:8000/index.html'
print("Testing request: ", url)
r = requests.get(url)
print("Status code: ", r.status_code)
उपयोग कर सकते हैं वापस आ जाएगी आप 'subprocess.Popen' बजाय' ओएस का इस्तेमाल कर सकते हैं .system', यह अतिरिक्त अतिरिक्त कार्यक्षमता प्रदान करता है जिसमें स्पॉन्डेड सबप्रोसेस की समाप्ति शामिल है। या आप बस 'SimpleHTTPServer' आयात कर सकते हैं और इसे सीधे अपनी स्क्रिप्ट में उपयोग कर सकते हैं ... – l4mpi
यह सहायक है, लेकिन क्या आप थोड़ा और कह रहे हैं? कमांड लाइन से इसका उपयोग करने के बारे में SimpleHTTPServer बात का उपयोग करने के बारे में मुझे लगता है कि एकमात्र संदर्भ; मुझे पूरा यकीन नहीं है कि सर्वर को कैसे रोकें और एक पायथन लिपि के भीतर से सर्वर को कैसे शुरू करें। मैंने पहले कभी भी प्रक्रियाओं का उपयोग नहीं किया है, इसलिए मुझे यकीन नहीं है कि सर्वर सबप्रोसेस कैसे शुरू करें, और फिर इसे रोकें। सक्रिय रूप से googling ... – japhyr
['subprocess' प्रलेखन] (http://docs.python.org/2/library/subprocess.html) में आपकी सभी आवश्यक जानकारी है, 'पॉपन' कन्स्ट्रक्टर के बारे में अनुभाग देखें और उपयोग करें 'पॉपन' ऑब्जेक्ट्स - आप कुछ ऐसा कर सकते हैं जैसे 'सर्वर = पॉपन (["पायथन", "-एम", "सरल एचटीटीपीएस सर्वर"])' और फिर 'server.terminate()' या 'server.kill()' का उपयोग करें प्रक्रिया खत्म करो। एक स्क्रिप्ट में 'SimpleHTTPServer' शुरू करने के लिए, बस' if __name__ == "__main __": 'SimpleHTTPServer में ब्लॉक को देखें।py - बस बेससेवर इंस्टेंस का संदर्भ रखें और इसे बंद करें (यह एक टीसीपीएस सर्वर सबक्लास है, इसलिए टीसीपीएस सर्वर डॉक्स को मदद करनी चाहिए)। – l4mpi