הגדרת תוכנית python בשרת.
כתבתי תוכנית קטנה, hello world בשרת centos ב-python.
כן פתחתי ב-firewall את הפורט 8005 למחשב שלי, כך שאני יכול לבצע telnet.
כשאני פותח דפדפן ומנסה להיכנס לדף הנ"ל נראה כאילו הדפדפן תקוע,
וכשאני יוצא בכוח מהתוכנית הנ"ל לדוגמה, אני אכן רואה hello world.
כשאני לוחץ על ctrl-c בשרת הלינוקס, היכן שה-python פתוח, אני מקבל הודעת שגיאה:
ואז הדפדפן משתחרר (במקום שעון חול תמידי בדפדפן, אני רואה לאחר לחיצה על ctrl+c את תוצאת הדף, כלומר hello world).
1. אין דרך אחרת מאשר להריץ serve_forever? גם שיהיה פתוח תמיד על כל המחיצה באופן קבוע (וההרצה תהיה ב-background).
2. אם אני עושה הקבלה לנ"ל ל-iis, ב-iis פשוט מגדירים את המחיצה של האתר, ופותחים את הפורט כרגיל (וכל הדפים באותו דף הם ניתנים לקריאה).
בתוכנית לדוגמה זה נראה שקיבעתי את השרת אך ורק ל-hello_world. איך אני מקבע את הנ"ל למשהו יותר רחב (מחיצה שלמה), וכן שדפדפן לא ייתקע לי כמו בדוגמה הנ"ל?
תודה.
כתבתי תוכנית קטנה, hello world בשרת centos ב-python.
קוד:
from wsgiref.simple_server import make_server
def hello_world(environ, start_response):
status = '200 ok'
headers = [('Content-type', 'text/plain')]
start_response(status, headers)
return [b'Hello world']
httpd = make_server('', 8005, hello_world)
print 'Serving on port 8005...'
httpd.serve_forever()
כשאני פותח דפדפן ומנסה להיכנס לדף הנ"ל נראה כאילו הדפדפן תקוע,
וכשאני יוצא בכוח מהתוכנית הנ"ל לדוגמה, אני אכן רואה hello world.
כשאני לוחץ על ctrl-c בשרת הלינוקס, היכן שה-python פתוח, אני מקבל הודעת שגיאה:
קוד:
Traceback (most recent call last):
File "/usr/lib64/python2.7/SocketServer.py", line 295, in _handle_request_noblock
self.process_request(request, client_address)
File "/usr/lib64/python2.7/SocketServer.py", line 321, in process_request
self.finish_request(request, client_address)
File "/usr/lib64/python2.7/SocketServer.py", line 334, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib64/python2.7/SocketServer.py", line 649, in __init__
self.handle()
File "/usr/lib64/python2.7/wsgiref/simple_server.py", line 116, in handle
self.raw_requestline = self.rfile.readline()
File "/usr/lib64/python2.7/socket.py", line 447, in readline
data = self._sock.recv(self._rbufsize)
KeyboardInterrupt
1. אין דרך אחרת מאשר להריץ serve_forever? גם שיהיה פתוח תמיד על כל המחיצה באופן קבוע (וההרצה תהיה ב-background).
2. אם אני עושה הקבלה לנ"ל ל-iis, ב-iis פשוט מגדירים את המחיצה של האתר, ופותחים את הפורט כרגיל (וכל הדפים באותו דף הם ניתנים לקריאה).
בתוכנית לדוגמה זה נראה שקיבעתי את השרת אך ורק ל-hello_world. איך אני מקבע את הנ"ל למשהו יותר רחב (מחיצה שלמה), וכן שדפדפן לא ייתקע לי כמו בדוגמה הנ"ל?
תודה.