def force_logout_participant(request, exptr_name=None, scen_name=None, part_id=None): rc = get_redis_connection() logout_msg = {"uid": part_id, "gid": "group-%s" % part_id, "type": "logout", "payload": {"text": "logout"}} routing_key = "%s.%s.%s.logout" % (get_tutalk_host(), exptr_name, scen_name) ret_val = rc.publish(routing_key, json.dumps(logout_msg)) time.sleep(2) # allow tutalk to logout user before re-displaying page return redirect("scenario-runner:index")
def stop_scenario(request, exptr_name=None, scen_name=None): get_object_or_404(models.Experimenter, name=exptr_name) exptr_scens = get_scenarios() if exptr_name in exptr_scens: if scen_name in exptr_scens[exptr_name]: if "pid" in exptr_scens[exptr_name][scen_name]: pid = exptr_scens[exptr_name][scen_name]["pid"] if check_pid(pid): try: os.kill(pid, signal.SIGINT) time.sleep(1) if check_pid(pid): os.kill(pid, signal.SIGKILL) pfx = "%s.%s" % (exptr_name, scen_name) rc = get_redis_connection() rc.hdel( "%s.scenarios" % get_tutalk_host(), "%s.status" % pfx, "%s.pid" % pfx, "%s.groups" % pfx ) time.sleep(2) except OSError as ose: LOGGER.error(ose) return redirect("scenario-runner:index")
def get_running_scenarios(): rc = get_redis_connection() scenarios_key = "%s.scenarios" % get_tutalk_host() dct = rc.hgetall(scenarios_key) return dct