Skip to content

Commit b5e0a11

Browse files
authored
add use case for VkRequestsPool (#349)
1 parent ae6584d commit b5e0a11

2 files changed

Lines changed: 30 additions & 1 deletion

File tree

examples/requests_pool.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,25 @@ def main():
6363

6464
print(friends)
6565

66+
"""Пример использования пула в виде объекта. Такой пул можно
67+
передать в качестве параметра"""
68+
69+
friends = {}
70+
71+
pool = vk_api.VkRequestsPool(vk_session)
72+
for user_id in [1, 183433824]:
73+
friends[user_id] = pool.method('friends.get', {
74+
'user_id': user_id,
75+
'fields': 'photo'
76+
})
77+
78+
pool.execute()
79+
80+
for key, value in friends.items():
81+
friends[key] = value.result
82+
83+
print(friends)
84+
6685
""" Следующий пример - более простая версия предыдущего
6786
6887
В friends будет записан тот же самый результат, что и в прошлом примере.

vk_api/requests_pool.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,12 @@ class VkRequestsPool(object):
7070
Позволяет сделать несколько обращений к API за один запрос
7171
за счет метода execute.
7272
73-
Служит как менеджер контекста: запросы к API добавляются в
73+
Варианты использованя:
74+
- В качестве менеджера контекста: запросы к API добавляются в
7475
открытый пул, и выполняются при его закрытии.
76+
- В качестве объекта пула. запросы к API дабвляются по одному
77+
в пул и выполняются все вместе при выполнении метода execute()
78+
7579
7680
:param vk_session: Объект :class:`VkApi`
7781
"""
@@ -110,6 +114,11 @@ def method(self, method, values=None):
110114
return result
111115

112116
def execute(self):
117+
"""
118+
Выполняет все находящиеся в пуле запросы и отчищает пул.
119+
Необходим для использования пула-объекта.
120+
Для пула менеджера контекста вызывается автоматически.
121+
"""
113122
for i in range(0, len(self.pool), 25):
114123
cur_pool = self.pool[i:i + 25]
115124

@@ -136,6 +145,7 @@ def execute(self):
136145
current_result.result = current_response
137146
else:
138147
current_result.error = next(response_errors_iter)
148+
self.pool = []
139149

140150

141151
def check_one_method(pool):

0 commit comments

Comments
 (0)