34 lines
1 KiB
Python
34 lines
1 KiB
Python
|
import threading
|
||
|
|
||
|
from django.conf import settings
|
||
|
from django.core.management.base import BaseCommand
|
||
|
|
||
|
from judge.bridge import DjangoHandler, DjangoServer
|
||
|
from judge.bridge import DjangoJudgeHandler, JudgeServer
|
||
|
|
||
|
|
||
|
class Command(BaseCommand):
|
||
|
def handle(self, *args, **options):
|
||
|
judge_handler = DjangoJudgeHandler
|
||
|
|
||
|
try:
|
||
|
import netaddr # noqa: F401, imported to see if it exists
|
||
|
except ImportError:
|
||
|
pass
|
||
|
else:
|
||
|
proxies = settings.BRIDGED_JUDGE_PROXIES
|
||
|
if proxies:
|
||
|
judge_handler = judge_handler.with_proxy_set(proxies)
|
||
|
|
||
|
judge_server = JudgeServer(settings.BRIDGED_JUDGE_ADDRESS, judge_handler)
|
||
|
django_server = DjangoServer(judge_server.judges, settings.BRIDGED_DJANGO_ADDRESS, DjangoHandler)
|
||
|
|
||
|
# TODO: Merge the two servers
|
||
|
threading.Thread(target=django_server.serve_forever).start()
|
||
|
try:
|
||
|
judge_server.serve_forever()
|
||
|
except KeyboardInterrupt:
|
||
|
pass
|
||
|
finally:
|
||
|
django_server.stop()
|