# Класс, который я далее импортирую и вызову асинхронный метод этого класса для получения результата
class Async_Meta_Trader():
"Класс для работы с торговым терминалом и данными: Класс Meta_Trader login и password, server\
данные эти берем в последующем из файла конфигурации json"
def __init__(self, login_user: int, password_user: str, server_user: str):
self.login = login_user
self.password = password_user
self.server = server_user
async def account_info(self) -> pd.DataFrame:
"Метод для получения информации об торговом счете из терминала"
if not mt5.initialize(login=self.login, password=self.password, server=self.server):
logger.warning(f"initialize() failed connecting to account_trader MetaTrader5, error code = {mt5.last_error()}")
else:
print('Подключение к торговому счету успешно')
account_info_dict = mt5.account_info()._asdict()
df = pd.DataFrame(account_info_dict.items(), columns=['Key', 'Value']) # конвертация
return df
import aiocron # для выполнения задач по расписанию
import asyncio
from My_Class_functions import Meta_Trader # импортировал класс в ко-м есть асин.метод account_info
Terminal = Meta_Trader(login_user=012313, password_user="test", server_user="test")
temp_df = asyncio.run(Terminal.account_info()) # получаю результат из асинх. метода, ко-й в далее вызовет ошибку в ниже следующей асин.функции
@aiocron.crontab(('*/1 * * * *')) # декоратор для вызов асин. функции каждую минуту
async def get_test(): # ??? здесь вызывает ошибку There is no current event loop in thread 'MainThread' #
print("run")
await asyncio.sleep(2)
asyncio.get_event_loop().run_forever()
** 如何正确使用异步方法 :(
从这个问题中,我可以假设你对异步代码不是很精通,所以这里有一个例子:
在您的代码中,尝试替换
asyncio.get_event_loop()为asyncio.new_event_loop(). 您也可以观看有关该主题的视频。