Server module

Server module.

Handle and response challenge requests from the frontend server.

class Server.EvIOLoop[source]

Bases: tornado.ioloop.PollIOLoop

Tornado compatible ioloop interface.

initialize(**kwargs)[source]

Initialize.

class Server.JudgeHandler(application, request, **kwargs)[source]

Bases: tornado.websocket.WebSocketHandler

Judge request handler.

Static attributes:
chal_running_count (int): Number of current running challenges. chal_queue (deque): Pending challenges.
chal_queue = deque([])
chal_running_count = 0
static emit_chal(obj=None, websk=None)[source]

Emit a challenge to the queue and trigger the start_chal.

Parameters:
  • obj (dict, optional) – Challenge config.
  • websk (WebSocketHandler) – Websocket object.
Returns:

None

on_close()[source]

Handle close event

on_message(msg)[source]

Handle message event

open()[source]

Handle open event

static start_chal(obj, websk)[source]

Start a challenge.

Check the challenge config, issue judge tasks, then report the result.

Parameters:
  • obj (dict) – Challenge config.
  • websk (WebSocketHandler) – Websocket object.
Returns:

None

Server.main()[source]

Main function.