#!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys import django from django.core.servers.basehttp import AdminMediaHandler, WSGIServerException, WSGIServer, WSGIRequestHandler from django.core.handlers.wsgi import WSGIHandler os.environ["DJANGO_SETTINGS_MODULE"] = 'settings' class Output: def __init__(self, stream): self.stream = stream def write(self, data): # Do nothing return None #self.stream.write(data) #self.stream.flush() def __getattr__(self, attr): return getattr(self.stream, attr) #sys.stderr = Output(sys.stderr) #sys.stdout = Output(sys.stdout) def handle(* args): try: if len(args) == 1: try: addr, port = args[0].split(":") except: addr = "127.0.0.1" port = args[0] else: addr = args[0] port = args[1] except: addr = '127.0.0.1' port = '8000' #print addr, port admin_media_path = '' shutdown_message = '' quit_command = (sys.platform == 'win32') and 'CTRL-BREAK' or 'CONTROL-C' from django.conf import settings from django.utils import translation #print "Django version %s, using settings %r" % (django.get_version(), settings.SETTINGS_MODULE) #print "Development server is running at http://%s:%s/" % (addr, port) #print "Quit the server with %s." % quit_command translation.activate(settings.LANGUAGE_CODE) try: handler = AdminMediaHandler(WSGIHandler(), admin_media_path) run(addr, int(port), handler) except WSGIServerException, e: # Use helpful error messages instead of ugly tracebacks. ERRORS = { 13: "You don't have permission to access that port.", 98: "That port is already in use.", 99: "That IP address can't be assigned-to.", } try: error_text = ERRORS[e.args[0].args[0]] except (AttributeError, KeyError): error_text = str(e) sys.stderr.write(("Error: %s" % error_text) + '\n') # Need to use an OS exit because sys.exit doesn't work in a thread #os._exit(1) except KeyboardInterrupt: if shutdown_message: print shutdown_message sys.exit(0) class ownRequestHandler(WSGIRequestHandler): def log_message(self, format, *args): return def run(addr, port, wsgi_handler): server_address = (addr, port) httpd = WSGIServer(server_address, ownRequestHandler) httpd.set_app(wsgi_handler) httpd.serve_forever() if __name__ == "__main__": handle(*sys.argv[1:])