как написать периодически повторяющуюся функцию для бота телеграмм, развернутого на Heroku - PullRequest
1 голос
/ 09 марта 2019

Я написал функцию, которая должна отправлять пользователям сообщение в определенное время:

def send_wishes_loop():
    connection = psycopg2.connect(...)
    cursor = connection.cursor()
    hour = datetime.datetime.now().hour  

    cursor.execute("""SELECT userid FROM usersdata WHERE morning_time={}""".format(hour))
    for userid in cursor:
        if userid:
            bot.send_message(userid[0] , random.choices(wishes_list.good_morning_wishes))
    ....

    cursor.close() 
    connection.commit() 
time.sleep((61-datetime.datetime.now().minute)*60))

и помещать его в отдельный поток

t1 = Thread(target=bot.polling())
t2 = Thread(send_wishes_loop())
t1.start()
t2.start()

, но он не работает.Как я могу реализовать эту функцию, исправить это?В документации к героку я читал про Heroku Scheduler, но не понял, как его использовать.Пожалуйста, помогите мне ...

1 Ответ

0 голосов
/ 09 марта 2019

Один из вариантов - использовать Heroku Scheduler.

Я предлагаю вам определить скрипт (с if __name__ == '__main__':), который вызывает вашу функцию send_wishes_loop() (без последней строки, содержащей sleep).

Вы добавляете скрипт в Heroku Scheduler как новое задание. Как вы можете видеть в документации, есть хороший веб-интерфейс, где вам просто нужно добавить вызов вашего скрипта (вероятно, что-то вроде python your_script.py) и установить интервал.

...