Запустите асинхронную функцию, отключенную от главной - PullRequest
0 голосов
/ 25 октября 2019

Возможно ли запустить функцию, отсоединенную от основного цикла?

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

Я попытался запустить его асинхронно с loop.create_task(run_command(input)), но он все еще ждет завершения команды, прежде чем выйти из содержащей функции, не разрешая ввод в течение этого времени.

вот базовый пример

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith(Config.prefix):
        loop = asyncio.get_event_loop()
        if command in commands.List:
            loop.create_task(getattr(commands, command)().call(message))
...