Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 08.01.2023
Сообщений: 13

Vk_api и asyncio

08.05.2023, 16:36. Показов 1484. Ответов 1

Студворк — интернет-сервис помощи студентам
Так вот суть в том, что создаю приложение, которое работает с вк и из-за того что запросов много, решил использовать асинхронность, и тут получается что перевел первоначальный код, но не работает, я уже не знаю что исправить можно, не работает именно аутификация как я понимаю

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import asyncio
from math import ceil
from vk_api import VkApi
from vk_api.exceptions import ApiError, AccessDenied, VkApiError, AuthError
from pprint import pprint
 
async def get_wall_ids(session, group_id, unix_time):
    try:
        temp = (await session.wall.get(owner_id=-group_id))['count']
        num_pages = ceil(temp/100)
        group_walls = []
        for page in range(num_pages):
            walls = await session.wall.get(owner_id=-group_id, offset=100*page, count=100)
            for wall in walls['items']:
                if wall['date'] >= unix_time:
                    group_walls.append(wall['id'])
        return group_id, group_walls, {'posts': len(group_walls)}
    except AccessDenied:
        print("Access denied: this wall is available only for community members")
        return group_id, [], {'posts': 0}
    except VkApiError as e:
        if isinstance(e, ApiError) and e.error_code == 29:
            print(f"Rate limit reached. Sleeping for {e.error['retry_after']} seconds.")
            await asyncio.sleep(e.error['retry_after'])
        else:
            print(f"Unexpected error: {e}")
        return group_id, [], {'posts': 0}
 
async def get_wall_ids_for_groups(session, groups, unix_time):
    tasks = []
    for group_id in groups:
        task = asyncio.create_task(get_wall_ids(session, group_id, unix_time))
        tasks.append(task)
    results = await asyncio.gather(*tasks, return_exceptions=True)
    dict_wall = {}
    dict_wall_count = {}
    for result in results:
        if isinstance(result, Exception):
            continue
        group_id, group_walls, group_count = result
        dict_wall[str(group_id)] = group_walls
        dict_wall_count[str(group_id)] = group_count
    return dict_wall, dict_wall_count
 
async def get_groups_by_tag(session, tag, market_on1_off0):
    groups = []
    pages = ceil((await session.groups.search(q=tag))['count'] / 999)
    for page in range(pages):
        groups_date = await session.groups.search(q=tag, market=market_on1_off0, offset=1000*page, count=1000)
        for group_date in groups_date['items']:
            groups.append(group_date['id'])
    return groups
 
async def get_wall_ids_async(token, tag, market_on1_off0, unix_time):
    async with VkApi(token=token) as session:
        groups = await get_groups_by_tag(session, tag, market_on1_off0)
        return await get_wall_ids_for_groups(session, groups, unix_time)
 
 
from MethodsGetVK.Date import MyDate
from time import mktime, strptime
 
async def main():
    try:
        session = VkApi(login=MyDate.MyPhone, password=MyDate.MyPassword)
        await session.auth(token_only=True)
        dict_wall, dict_wall_count = await get_wall_ids_async(
                session,
                tag='example',
                market_on1_off0=1,
                unix_time = int(mktime(strptime("2022-01-01", "%Y-%m-%d")))
            )
        pprint(dict_wall)
        pprint(dict_wall_count)
    except AuthError:
        print("Failed to authenticate")
 
 
if __name__ == '__main__':
    asyncio.run(main())
ошибку выдает следующую
File "e:\Mat stat project\asinc.py", line 80, in <module>
asyncio.run(main())
File "C:\Users\admin\AppData\Local\Programs\P ython\Python310\lib\asyncio\runners.py", line 44, in run
return loop.run_until_complete(main)
File "C:\Users\admin\AppData\Local\Programs\P ython\Python310\lib\asyncio\base_events. py", line 649, in run_until_complete
return future.result()
File "e:\Mat stat project\asinc.py", line 66, in main
await session.auth(token_only=True)
TypeError: object NoneType can't be used in 'await' expression
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.05.2023, 16:36
Ответы с готовыми решениями:

asyncio.wait vs asyncio.gather
Всем привет! :victory: Вопросы внизу. Есть два похожих теста: #1 - asyncio.wait import asyncio import random async def...

Vk_api не работает vk_api.users.ge()
Вот код: def user_get(uid): LINE 321- user_ids = uid data = vk_api.users.get(user_ids) ...

Asyncio
Использую библиотеку aiogram. Я хочу закрыть задачу созданной с помощью asyncio.create_task(function(message)) По нажатию...

1
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
11.05.2023, 19:10
Цитата Сообщение от Wilsey Посмотреть сообщение
await session.auth(token_only=True)
TypeError: object NoneType can't be used in 'await' expression
ну видимо вернуло Нан, а не корутину. А вк апи именно асинхронная библиотека?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.05.2023, 19:10
Помогаю со студенческими работами здесь

WxPython и asyncio
Добрый день. Подскажите можно ли в приложении wxPython использовать модуль asyncio? Как я понимаю wxPython, при старте приложения,...

Проблема с asyncio
Здравствуйте! пытаюсь разобраться с asyncio.. Нужна помощь, ошибка: RuntimeError: This event loop is already running sys:1: RuntimeWarning:...

Asyncio парсер
Подскажите направление, словами, нужен подход к задаче. Используя asynсio надо рекурсивно проверить все внешние ссылки на странице. ...

asyncio Асинхронный Сервер
Доброго времени суток форумчане. Питон прекрасен и многогранен. Предельно прост и понятен :) ... За исключением asyncio Задача...

Asyncio ошибка работы парсера
Здравствуйте, имеется парсер на Python в связке asyncio + aiohttp + threadPoolExecutor + lxml. Парсер работает более 2 часов, парся и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru