def fetch_members(self, offset=0, count=1000): response = api_call('groups.getMembers', group_id=self.pk, fields='first_name,last_name,sex,bdate,country,city', offset=offset, count=count, v=5.9) users = User.remote.parse_response_users(response, items_field='items') users_to_fetch.disconnect(receiver=fetch_users) # prevent fetch users work self.members.add(*users) return users
def run(self): group = self.group offset = self.members_in_db_count while True: ids = self.fetch_members(group, offset=offset, count=1000) self._user_ids += ids self.members_in_db_count += len(ids) offset += 1000 if len(ids) < 1000: break # save users users_to_fetch.disconnect(receiver=fetch_users) # prevent fetch users work group.members = self._user_ids if group.members_count > group.members.count(): raise Exception("Error occured while fetch members for VK group %s" % group.pk)