This approach seems to be valid for your use case.
The shuffling should not be changed, if you wrap the DataLoader into cycle:
class MyDataset(Dataset):
    def __init__(self):
        self.data = torch.arange(100).view(100, 1)
        
    def __getitem__(self, index):
        x = self.data[index]
        return x
    
    def __len__(self):
        return len(self.data)

dataset = MyDataset()
loader = DataLoader(
    dataset,
    batch_size=5,
    shuffle=False
)

my_iter = itertools.cycle(loader)

for _ in range(100):
    x = next(my_iter)
    print(x)