This was almost the case with you, you just had to put the yield statement in an infinite loop so that it always wraps around when it was needed:
def day_generator():
while True:
for w in ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']:
yield w
g = day_generator()
for _ in range(10):
print(next(g))
, , itertools.cycle .