Бот не может обрабатывать несколько запросов параллельно функции (discord.py) - PullRequest
0 голосов
/ 06 апреля 2020

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

nlp = spacy.load("en_core_web_sm")

@bot.event
async def on_message(message):
   if message.content.startswith('!research'):

       doc = 'long paragraphs...'

      #Searches through doc for sentences relating to a word
       nlp(doc) #Takes time to process here
       results = textacy.extract.semistructured_statements(document, 'a word')

Мой вопрос: как я могу запустить похожую функцию с несколькими запросами заодно или что я тут не так делаю?

1 Ответ

0 голосов
/ 06 апреля 2020

Я исправил это, создав другую асинхронную функцию c, и она будет вызываться при запуске основного события.

nlp = spacy.load("en_core_web_sm")

#Use async here!
async def researchCommand(doc, message): #Takes in doc and message so we can respond to author
    #Does processing here
    nlp(doc)


@bot.event
async def on_message(message): #Main function

    big_book = 'long paragraphs...'

    if message.content.startswith('!research'):
        await researchCommand(big_book, message)

Теперь вы можете иметь несколько запросов параллельно функции.

...