我编写了一个函数,该函数应在特定时间向用户发送消息:
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文档中,我读到了有关Heroku Scheduler的信息, 但不知道如何使用。拜托,帮帮我...
答案 0 :(得分:0)
一种选择是使用Heroku Scheduler。
我建议您定义一个脚本(使用if __name__ == '__main__':
)来调用函数send_wishes_loop()
(最后一行不包含sleep
)。
您将脚本添加到Heroku Scheduler作为新作业。
如您在文档中所见,有一个不错的Web界面,您只需要添加脚本调用(可能类似于python your_script.py
之类的内容)并设置时间间隔即可。