python multiprocessing программа преждевременно заканчивает свою работу
Создаю процесс для запуска бота следующим способом:
from multiprocessing import Process
if __name__ == '__main__':
token = ''
logger.info(f'Create new process for bot, token: {token }')
p = Process(target=create_bot, args=(token,))
p.start()
В версии питона 3.6.9 программа почему-то сразу закрывается (после создания процесса с ботом).
А в версии питона Python 3.8.2 все хорошо, бот работает и обрабатывает сообщения.
Код функции создания бота:
def create_bot(token):
"""Start the bot."""
updater = Updater(token, use_context=True)
dp = updater.dispatcher
dp.add_handler(MessageHandler(Filters.text))
updater.start_polling(clean=True)
Как сделать, чтобы на версии 3.6.9 процесс сразу не закрывался? Я также заметил, что если в версии 3.6.9 добавить бесконечный цикл в create_bot, то процесс не закрывается и все работает как задумано, но это наверное не очень красивое решение:
def create_bot(token):
"""Start the bot."""
updater = Updater(token, use_context=True)
dp = updater.dispatcher
dp.add_handler(MessageHandler(Filters.text))
updater.start_polling(clean=True)
while True:
pass
Ответы (1 шт):
Автор решения: Hyppoprogramm
→ Ссылка
Убери while и добавь это:
p.wait()
wait заставит программу дождаться завершения процесса.