Open Vponed opened 3 years ago
В тех запросах, которые реализованы, она не нужна, поэтому не поддерживается.
На версиях 3.7, 3.9, 3.10 с установленными пакетами aiomoex выдает одинаковую ошибку:
AttributeError: module 'aiomoex' has no attribute 'ISSClient'
Я каждый день пользуюсь на 3.10 и все работает. Думаю, что-то у вас неправильно установлено. Приведите минимальный код, который воспроизводит эту ошибку с полным трейсбеком, может удастся понять, в чем проблема
import asyncio
import aiohttp
import aiomoex
import pandas as pd
async def main():
request_url = "https://iss.moex.com/iss/engines/stock/" "markets/shares/boards/TQBR/securities.json"
arguments = {"securities.columns": ("SECID," "REGNUMBER," "LOTSIZE," "SHORTNAME")}
async with aiohttp.ClientSession() as session:
iss = aiomoex.ISSClient(session, request_url, arguments)
data = await iss.get()
df = pd.DataFrame(data["securities"])
df.set_index("SECID", inplace=True)
print(df.head(), "\n")
print(df.tail(), "\n")
df.info()
asyncio.run(main())
Вывод
Traceback (most recent call last):
File "C:\MOEX\aiomoex.py", line 5, in <module>
import aiomoex
File "C:\MOEX\aiomoex.py", line 23, in <module>
asyncio.run(main())
File "C:\Python3\lib\asyncio\runners.py", line 44, in run
return loop.run_until_complete(main)
File "C:\Python3\lib\asyncio\base_events.py", line 642, in run_until_complete
return future.result()
File "C:\MOEX\aiomoex.py", line 14, in main
iss = aiomoex.ISSClient(session, request_url, arguments)
AttributeError: partially initialized module 'aiomoex' has no attribute 'ISSClient' (most likely due to a circular import)
C:\Windows\System32>pip install aiomoex
Requirement already satisfied: aiomoex in c:\python310\lib\site-packages (2.0.0)
Requirement already satisfied: aiohttp in c:\python310\lib\site-packages (from aiomoex) (3.8.3)
Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in c:\python310\lib\site-packages (from aiohttp->aiomoex) (4.0.2)
Requirement already satisfied: frozenlist>=1.1.1 in c:\python310\lib\site-packages (from aiohttp->aiomoex) (1.3.1)
Requirement already satisfied: multidict<7.0,>=4.5 in c:\python310\lib\site-packages (from aiohttp->aiomoex) (6.0.2)
Requirement already satisfied: charset-normalizer<3.0,>=2.0 in c:\python310\lib\site-packages (from aiohttp->aiomoex) (2.1.1)
Requirement already satisfied: yarl<2.0,>=1.0 in c:\python310\lib\site-packages (from aiohttp->aiomoex) (1.8.1)
Requirement already satisfied: aiosignal>=1.1.2 in c:\python310\lib\site-packages (from aiohttp->aiomoex) (1.2.0)
Requirement already satisfied: attrs>=17.3.0 in c:\python310\lib\site-packages (from aiohttp->aiomoex) (22.1.0)
Requirement already satisfied: idna>=2.0 in c:\python310\lib\site-packages (from yarl<2.0,>=1.0->aiohttp->aiomoex) (3.4)
Такое впечатление, что у вас конфликт имен:
C:\MOEX\aiomoex.py
, если я правильно понял aiomoex
Как следствие питон пытается не из библиотеки брать ISSClient
, а из вашего же файла, в результате получается циклическая зависимость (circular import
). Назовите файл по-другому и попытайтесь выполнить.
Спасибо большое! Получилось!
Еще подскажите, пожалуйста! Как победить: RuntimeError: Event loop is closed
Слишком абстрактный вопрос, где-то вы видимо eventloop
закрываете. Без конкретного примера кода могу только гадать - например функция asyncio.run
закрывает eventloop
.
PS: мой вам совет, если вы не очень знаете asyncio, то легче воспользоваться библиотекой apimoex, а не мучаться с асинхронным программированием.
Решил сам, но это только для Windows.
Перед вызовом: asyncio.run(main())
добавить строку
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
Запросы к бирже я сам формирую, объемы запросов выросли и я вспомнил про Вашу библиотеку, ускоряющую получение запросов. Еще раз спасибо!
Добрый день Не могу авторизоваться на бирже по ссылке: https://passport.moex.com/authenticate из документации Передаю в заголовке логин и пароль, но получаю ошибку 403 Подскажите, с чем это связано?
Я не представитель биржи - наверное вам там лучше напрямую спросить
Простите, а авторизация но мосбирже поддерживается?