def parallelize_codechef(self, handle, page, last_retrieved):
        """
            Helper function for retrieving codechef submissions parallely
        """

        if self.retrieve_failed:
            return

        url = "https://www.codechef.com/recent/user?user_handle=" + \
               handle + \
               "&page=" + \
               str(page)

        tmp = get_request(url, headers={"User-Agent": user_agent})

        # GET request failed
        if tmp == -1 or tmp == {}:
            self.retrieve_failed = True
            return

        d = ast.literal_eval(tmp.text)["content"]

        it = 1
        self.submissions[handle][page] = {}
        x = bs4.BeautifulSoup(d)

        for i in x.find_all("tr"):
            try:
                if i["class"][0] == "kol":

                    self.submissions[handle][page][it] = []
                    submission = self.submissions[handle][page][it]
                    append = submission.append

                    # tos = time_of_submission
                    tos = i.contents[0].contents[0]
                    tos = str(ast.literal_eval(repr(tos).replace("\\", "")))
                    tos = self.parsetime(tos)
                    curr = time.strptime(str(tos), "%Y-%m-%d %H:%M:%S")

                    # So cool optimization!
                    if curr <= last_retrieved:
                        return

                    append(str(tos))

                    # Problem name/url
                    prob = i.contents[1].contents[0]
                    prob["href"] = "http://www.codechef.com" + prob["href"]
                    problem_link = eval(repr(prob["href"]).replace("\\", ""))
                    append(problem_link)
                    try:
                        append(prob.contents[0])
                    except __HOLE__:
                        append("")

                    # Submission status
                    stat = i.contents[2].contents[0]
                    stat = stat.find("img")["src"]
                    stat = repr(stat).replace("\\", "")
                    stat = stat[7:-5]
                    st = "AC"
                    if stat == "tick-icon":
                        st = "AC"
                    elif stat == "cross-icon":
                        st = "WA"
                    elif stat == "alert-icon":
                        st = "CE"
                    elif stat == "runtime-error":
                        st = "RE"
                    elif stat == "clock_error":
                        st = "TLE"
                    else:
                        st = "OTH"
                    append(st)

                    # Question points
                    pts = i.contents[2].contents[0].contents
                    try:
                        if  len(pts) >= 5:
                            points = pts[2] + " " + pts[4]
                        else:
                            points = pts[2]
                    except IndexError:
                        if st == "AC":
                            points = "100"
                        else:
                            points = "0"
                    append(points)

                    # Language
                    append(i.contents[3].contents[0].strip())

                    # View code link
                    # @ToDo: Find a way to get the code link
                    view_link = ""
                    append(view_link)

                    it += 1
            except KeyError:
                pass

    # -------------------------------------------------------------------------
dataset/ETHPy150Open stopstalk/stopstalk-deployment/modules/sites/codechef.py/Profile.parallelize_codechef