У меня есть это код в моем основном скрипте, который выполняет функцию в другом скрипте:
Код: Выделить всё
async def get_all_group_members():
memberListAll = []
for group in groupList:
# print(f"We are trying to run group {group}")
results = await gq.get_group_user(group['GroupID'], graphServiceClient)
memberDict = {"GroupName":group["GroupName"], "GroupID":group["GroupID"], "MemberList":results}
memberListAll.append(memberDict)
return memberListAll
results = asyncio.run(get_all_group_members())
Код: Выделить всё
memberList = []
members = await graphServiceClient.groups.by_group_id(groupID).members.get()
if members and members.value:
for member in members.value:
user = await graphServiceClient.users.by_user_id(member.id).get()
if user:
memberList.append(user.display_name)
return memberList
Код: Выделить всё
async def get_user_name():
results = await gq.get_user_by_id(member=member,graphServiceClient=graphServiceClient)
return results
results2 = asyncio.run(get_user_name())
Код: Выделить всё
user = await graphServiceClient.users.by_user_id(member).get()
print(user)
Почему я не могу вызвать asyncio. run() более одного раза в сценарии? Как мне изменить свой скрипт, чтобы я мог успешно запускать обе эти функции асинхронно и получать нужные мне данные?
РЕДАКТИРОВАТЬ (выяснил решение самостоятельно):
Чтобы иметь возможность запускать обе асинхронные функции, я создал еще одну асинхронную функцию, в которую я поместил обе другие функции, затем вызвал эту функцию, используя asyncio.run(). Я до сих пор не знаю, почему я не могу вызвать asyncio.run() два раза в одном и том же сценарии, чтобы это не вызвало проблем, но, по крайней мере, я могу двигаться вперед с этой проблемой, которую пытаюсь решить. . Вот как код выглядит сейчас:
Код: Выделить всё
async def get_all_group_members():
memberListAll = []
for group in groupList:
# print(f"We are trying to run group {group}")
results = await gq.get_group_user(group['GroupID'], graphServiceClient)
memberDict = {"GroupName":group["GroupName"], "GroupID":group["GroupID"], "MemberList":results}
memberListAll.append(memberDict)
return memberListAll
async def get_user_name():
member = ''
results = await gq.get_user_by_id(member=member,graphServiceClient=graphServiceClient)
return results
async def run_async_functions():
groupResults = await get_all_group_members()
usernameResults = await get_user_name()
return groupResults, usernameResults
groupResults, usernameResults = asyncio.run(run_async_functions())
Подробнее здесь: https://stackoverflow.com/questions/786 ... -functions