def long_poll(self, id): from datetime import datetime from time import sleep start = datetime.now() if 'my_board' in request.POST: my_board = request.POST['my_board'] my_board = int(my_board, 2) else: return '' game = self.game_q.filter_by(id=id).first() while True: Session.refresh(game) if not game: return '' board_size = game.size x_pos = game.x_pos o_pos = game.o_pos cur_board = x_pos | o_pos data = {} if cur_board > my_board: x_pos_bin = int_to_bin(x_pos, board_size) o_pos_bin = int_to_bin(o_pos, board_size) positions = [] for i in range(board_size): positions.append([]) for j in range(board_size): if x_pos_bin[(i*board_size)+j] == '1': positions[i].append('X') elif o_pos_bin[(i*board_size)+j] == '1': positions[i].append('O') else: positions[i].append('') data['result'] = positions if bit_count(cur_board) == (board_size**2): data['message'] = 'It\'s a tie!' if game_over(x_pos): data['message'] = 'X Wins!' elif game_over(o_pos): data['message'] = 'O Wins!' if len(data) > 0: return data sleep(1) delta = datetime.now() - start if delta.seconds >= 30: return {'again': True} return ''