2011-02-28 5 views
0

저는 Python을 처음 사용했습니다. WSGI & login.html 페이지 (AJAX 사용)를 테스트하기 위해 자체 서버를 설정하려고합니다. 사용자 지정 WSGI 서버 연결 오류가 발생했습니다.

하지만 (내가 자습서 다음 통해 내 서버) 내 WSGI.py을 실행하는 데 갈 때이 오류가 얻을 :

Traceback (most recent call last):
File "C:\Users\Print\Desktop\Website\KazCare\wsgi.py", line 63, in start_server()
File "C:\Users\Print\Desktop\Website\KazCare\wsgi.py", line 57, in start_server httpd = make_server("", PORT, test_app)
File "C:\Python27\lib\wsgiref\simple_server.py", line 144, in make_server server = server_class((host, port), handler_class)
File "C:\Python27\lib\SocketServer.py", line 408, in init self.server_bind()
File "C:\Python27\lib\wsgiref\simple_server.py", line 48, in server_bind HTTPServer.server_bind(self)
File "C:\Python27\lib\BaseHTTPServer.py", line 108, in server_bind SocketServer.TCPServer.server_bind(self)
File "C:\Python27\lib\SocketServer.py", line 419, in server_bind self.socket.bind(self.server_address)
File "C:\Python27\lib\socket.py", line 224, in meth return getattr(self._sock,name)(*args)
error: [Errno 10013] An attempt was made to access a socket in a way forbidden by its access permissions

당신이 내가 잘못하고있는 중이 야 어떻게 생각하세요?

import threading 
import webbrowser 
from wsgiref.simple_server import make_server 

FILE = 'frontend.html' 
PORT = 8080 

def test_app(environ, start_response): 

    if environ['REQUEST_METHOD'] == 'POST': 

     try: 
      request_body_size = int(environ['CONTENT_LENGTH']) 
      request_body = environ['wsgi.input'].read(request_body_size) 
     except (TypeError, ValueError): 
      request_body = "0" 

     try: 
      response_body = str(int(request_body) ** 2) 
     except: 
      response_body = "error" 

     status = '200 OK' 
     headers = [('Content-type', 'text/plain')] 
     start_response(status, headers) 
     return [response_body] 

    else: 
     response_body = open(FILE).read() 
     status = '200 OK' 
     headers = [('Content-type', 'text/html'), ('Content-Length', str(len(response_body)))] 
     start_response(status, headers) 
     return [response_body] 

def open_browser(): 
    """Start a browser after waiting for half a second.""" 

    def _open_browser(): 
     webbrowser.open('http://localhost:%s/%s' % (PORT, FILE)) 
     thread = threading.Timer(0.5, _open_browser) 
     thread.start() 

def start_server(): 
    """Start the server.""" 
    httpd = make_server("", PORT, test_app) 
    httpd.serve_forever() 


if __name__ == "__main__": 
    open_browser() 
    start_server() 

답변

1

난 당신이 잘못 아무것도 생각하지 않습니다

여기 내 서버입니다. 해당 포트에 바인딩 할 수있는 권한이없는 것 같습니다. 나는 이것이 * nix에서 문제가 될 수 있으며, 예를 들어 포트 80에 바인드하려는 경우 sudo로 실행해야한다는 것을 알고 있습니다. 나는 그것이 창문에서 어떻게 작동하는지 알고있는 척하지 않는다. 일반적으로 HTTP (8888 또는 9999)와 연결되지 않은 포트로 변경하여 작동하는지 확인하십시오. 관리자로도 시도해 볼 수 있습니다.

1

이미 다른 용도로 사용 중일 수 있습니다. 웹 브라우저에서 http://localhost:8080/으로 액세스하여 응답하는지 확인하십시오.

관련 문제