def do_start_experiment(self, serialized_client_initial_data, serialized_server_initial_data):
        try:
            back_url = json.loads(serialized_client_initial_data).get('back','')

            response_str = self._request('', {
                'client_initial_data' : serialized_client_initial_data,
                'server_initial_data' : serialized_server_initial_data,
                'back' : back_url,
            })
            try:
                response = json.loads(response_str)
            except:
                print 
                print "Got invalid JSON response from the HTTP server:"
                print "*" * 20
                print response_str
                print "*" * 20
                sys.stdout.flush()
                raise
            url = response.get('url','http://server.sent.invalid.address')

            config = {
                'url'  : url,
            }
            self.session_id = response.get('session_id','invalid_session_id')

            return json.dumps({ "initial_configuration" : json.dumps(config), "batch" : self.batch })
        except:
            traceback.print_exc()
            raise
Invoked by WebLab on the start experiment event.
dataset/ETHPy150Open weblabdeusto/weblabdeusto/server/src/experiments/http_experiment.py/HttpExperiment.do_start_experiment