https://pypi.org/project/vk-api/
get_all(method, max_count, values=None, key='items', limit=None, stop_fn=None, negative_offset=False)
Использовать только если нужно загрузить все объекты в память.
Eсли вы можете обрабатывать объекты по частям, то лучше использовать get_all_iter
Например если вы записываете объекты в БД, то нет смысла загружать все данные в память
def main(): """ Пример получения всех постов со стены """ login, password = 'python@vk.com', 'mypassword' vk_session = vk_api.VkApi(login, password) try: vk_session.auth(token_only=True) except vk_api.AuthError as error_msg: print(error_msg) return tools = vk_api.VkTools(vk_session) При использовании get_all сокращается количество запросов к API за счет метода execute в 25 раз. Например за раз со стены можно получить 100 * 25 = 2500, где 100 - максимальное количество постов, которое можно получить за один запрос (обычно написано на странице с описанием метода) """ wall = tools.get_all('wall.get', 100, {'owner_id': 1}) print('Posts count:', wall['count']) if wall['count']: print('First post:', wall['items'][0], '\n') if wall['count'] > 1: print('Last post:', wall['items'][-1]) if __name__ == '__main__': main()
При запуске метода пишет ошибку:
wall = tools.get_all('wall.get', 100, {'owner_id': 1})Traceback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: VkApiMethod.__call__() takes 1 positional argument but 4 were given
Traceback (most recent call last):
File “C:\Python\proekt\vk\vk_api\main.py”, line 129, in main_vk
wall = tools.get_all('wall.get', 100, {'owner_id': acc})
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: VkApiMethod.__call__() takes 1 positional argument but 4 were given
Вот что интересно… Пример из документации не работает!
Можно, конечно, всё сделать через requests, но зачем, когда есть уже готовый метод?