Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 16, 2016 05:44:06

DozenFrozen
Зарегистрирован: 2016-11-16
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Как запустить параллельно 2 функции?

Есть телеграм-бот, к которому я стараюсь привязать отправку погоды по таймеру. Отдельно по таймеру оно работает, так же как и отдельно посылает запросы на погоду вручную типо “какая погода прям сейчас”. Возникла проблема - связать оба процесса, то есть дело пахнет многопоточностью, как я понял. Нашел вариант - использовать schedule и столкнулся со следующей проблемой: после установки времени таймера, я остаюсь в функции с отправкой сообщений по таймеру, то есть вручную все функции отваливаются.

Вот код для ознакомления:

 def set_time(message): #Функция с запуском таймера и отправкой сообщения погоды
    timer = message.text
    schedule.every().day.at(timer).do(timer_alert, message)
    nowTime = datetime.now()
    print ('%s' % nowTime.strftime("%d.%m.%Y %H:%M:%S"), "// Set timer at: ", timer)
    process_step(message)
    while True:
        schedule.run_pending()
def timer_alert(message): #Сообщение по таймеру
    nowTime = datetime.now()
    bot.send_message(message.chat.id, 'Погода пришла!')
    print ('%s' % nowTime.strftime("%d.%m.%Y %H:%M:%S"), '// Send weather timer message')
@bot.message_handler(content_types=['location']) #обработка локации
def handle_location(message):
    nowTime = datetime.now()
    lat = message.location.latitude
    lng = message.location.longitude
    bot.reply_to(message, '%s\n%s' % (lat, lng))
    send_alltime(message)
    global forecast
    forecast = forecastio.load_forecast(api_key, lat, lng, time=datetime.now(), units="si")
    print ('%s' % nowTime.strftime("%d.%m.%Y %H:%M:%S"), '// Set location message')

Собственно вопрос - как запустить одновременную работу отправки сообщений по таймеру и оставить рабочими запросы вручную и изменение локации.

Офлайн

#2 Ноя. 16, 2016 10:03:42

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Как запустить параллельно 2 функции?

вопросы про многопоточность к гил
а здесь обычный scheduler, если я правильно понял



Офлайн

#3 Ноя. 16, 2016 10:40:21

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как запустить параллельно 2 функции?

>> как запустить 2 функции параллельно?
По простому: В связи с изменениями в питоне 3 вот так теперь



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version