runtornado: Remove ability to run without specifying exactly one port

The zero-port case never actually worked, because addrport wasn't an optional
parameter in run_one.  And multiple ports was implemented using the
multiprocessing library, which is just bad news.  Since we have no need for
this, remove it before it can cause trouble.

(imported from commit 9d913924701f30d23ebe878b76c8f1f0da2800e2)
This commit is contained in:
Keegan McAllister 2012-10-30 16:37:19 -04:00
parent 0717665b69
commit 8259059119
1 changed files with 6 additions and 29 deletions

View File

@ -21,43 +21,20 @@ class Command(BaseCommand):
help = "Starts a Tornado Web server wrapping Django."
args = '[optional port number or ipaddr:port]\n (use multiple ports to start multiple servers)'
def handle(self, *addrport, **options):
def handle(self, addrport, **options):
# setup unbuffered I/O
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
sys.stderr = os.fdopen(sys.stderr.fileno(), 'w', 0)
if len(addrport) == 0:
self.run_one(**options)
elif len(addrport) == 1:
self.run_one(addrport[0], **options)
else:
from multiprocessing import Process
plist = []
for ap in addrport:
p = Process(target=self.run_one, args=(ap,), kwargs=options)
p.start()
plist.append(p)
while plist:
if plist[0].exitcode is None:
plist.pop(0)
else:
plist[0].join()
def run_one(self, addrport, **options):
import django
from django.core.handlers.wsgi import WSGIHandler
from tornado import httpserver, wsgi, ioloop, web
if not addrport:
addr = ''
port = '8000'
else:
try:
addr, port = addrport.split(':')
except ValueError:
addr, port = '', addrport
if not addr:
addr = '127.0.0.1'