Запросы Slack bot api и запросы моего сервера не выполняются одновременно
Я создал приложение бота для Slack, используя Django. В этом приложении бот будет задавать некоторые вопросы пользователям по заданному расписанию (периодически) из базы данных. Бот будет ждать ответа от пользователей.
Вот как я вызываю API slack, чтобы задавать вопросы одновременно, за один раз. Я использовал async и await в функции.
async def post_async_message(channel, message):
""" broadcast message in the given channel asynchronously """
try:
response = await Async_Client.chat_postMessage(
channel=channel,
text=message
)
if response['ok']:
await asyncio.sleep(Wait_For_Answer)
except SlackApiError as e:
raise CustomError(f"Error occurred: {e}", e.response)
Это функция, из которой была вызвана функция post_async_message.
async def post_standup_message(standup_id):
participants = await models.get_participants(standup_id)
questions = await models.get_standup_questions(standup_id)
async def ask_question(user_id):
# send standup question to the user
async for question in questions:
try:
await views.post_async_message(user_id, question.Question)
except CustomError as e:
print(e)
tasks = [ask_question(participant.Slack_User_Id) async for participant in participants]
for completed_task in asyncio.as_completed(tasks):
await completed_task
asyncio.run(post_standup_message(49))
Все идет хорошо. Но я заметил одну вещь: во время задавания вопросов ботом, если я одновременно вызываю какой-либо API, сервер не может выполнить API. Но когда выполнение функции post_standup_message завершено, API работает отлично. Это означает, что API и бот не работают одновременно. В чем причина этого? Обратите внимание, что мой бот и API работают на одном сервере. Также у меня есть несколько вопросов
Правильно ли я делаю, что запускаю бота и API на одном сервере? Хорошо ли иметь внешний инструмент фонового планирования для создания бота Slack?