following up on the concerns about the memory usage here, I think the safe way to chunk these queries is not by slicing the queryset.
Rather, using `pk` as the delimiter for successive queries ( `filter(pk>last_pk).limit(1000)` or some such) should do the trick and prevent different queries from returning the same user or skipping users.  I don't even think that an unenrollment half way through the set of queries causes a problem, since each pk should only be considered by 1 query.