【发布时间】:2021-05-11 01:14:45
【问题描述】:
希望你们一切顺利。
我在 Heroku 上部署了一个电报机器人,但机器人在 20-30 分钟后睡着了,
因为我使用的是 Heroku 的免费 dyno,所以我试图通过创建一个 cronjob 来防止这种情况发生
只在控制台中打印一些东西以保持机器人保持清醒。
正如您在下面看到的,我有2 functions、start_polling 和cronjob
但由于我先执行start_polling,cronjob 不会执行
我可以在这里使用什么技巧来防止我的机器人睡着!?
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'telega.settings')
django.setup()
from main.bot import bot
from crontab import CronTab
from datetime import datetime
from apscheduler.schedulers.blocking import BlockingScheduler
def cronjob():
""" Main cron job to prevent bot fall asleep. """
print("Cron job is running, bot wont fall asleep")
print("Tick! The time is: %s" % datetime.now())
def start_polling():
""" Starts the bot """
try:
bot.skip_pending = True
print(f'Bot {bot.get_me().username} started')
bot.polling()
except Exception as e:
print(e)
# 1. Start polling
start_polling()
# 2. Start the scheduler ==> Prevent bot to fall asleep
scheduler = BlockingScheduler()
scheduler.add_job(cronjob, "interval", seconds=300)
scheduler.start()
【问题讨论】:
标签: python heroku cron telegram-bot