Gå til innhold

Hvordan legge server i egen tråd?


Anbefalte innlegg

Skrevet

Heisann. Har goldt på i hele kveld og knota med dette, så nå følte jeg at jeg måtte spørre her istedet. Hvordan får jeg en server tråda? Jeg har kommet fram til noe kode jeg skal dele nokså snart, men basert på om jeg kjører den som daemon eller ikke; vil den enten: ikke kjøre i egen tråd; eller så returnerer den tvert, uten at det er mulig å komme seg inn på serveren.

 

Jeg begynte først med å overstyre threading.Thread sin run-metode, men fant deretter noe på nettet, men jeg får ikke det til å virke heller.

 

Noen forslag?

 

 

Litt forkorta eksempel:

import threading
import BaseHTTPServer, SocketServer, cgi

class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
   def do_GET():
       self.send_response(200)
       self.send_header("Content-type", "text/html")
       self.end_headers()
       self.wfile.write("why oh why won't you be threaded? :(")
       
class ThreadedServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
   stop = False
   
   def __init__(self, *args, **kws):
       self.threads = []
       BaseHTTPServer.HTTPServer.__init__(self, *args, **kws)
       

   # This method comes from ThreadingMixIn
   def process_request_thread(self, request, client_address):
       my_thread = threading.currentThread()
       self.threads.append(my_thread)
       return SocketServer.ThreadingMixIn.process_request_thread(
               self, request, client_address)

class ServerManager(object):
   def __init__(self):
       self.host = HOST
       self.port = PORT
       self.server = ThreadedServer((self.host, self.port), Handler)

   def start(self):
       print '\n serving at port', PORT
       self.server_thread = threading.Thread(
                               target=self.server.serve_forever)
       #self.server_thread.setDaemon(False)
       self.server_thread.start()
ServerManager().start()

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...