我在使用discord。py创建一个discord机器人,我需要每天在特定的时间执行某些操作。我看到了这个答案:如何在不和谐中循环。py重写?到目前为止,我一直在使用它。
当我在heroku免费计划上托管我的机器人时,问题就开始了。Heroku上的服务器每天至少重置一次,这会弄乱计时器,如该帖子所示。
我还看到了日程库。这个的问题是它似乎使用了一个无限循环。这不会阻止我在24小时内运行其他任何东西吗?机器人需要能够随时响应命令,除了每24小时发送一次消息。
即使服务器重置,我如何在每天的特定时间执行操作?提前感谢您!
heroku免费计划是Linux。因此,cron将允许您在特定的时间和/等/初始化运行东西。d/将允许您在启动时运行。了解您的操作系统是件好事。
我知道我迟到了,但这可能对未来的用户有所帮助
有一个名为APScheduler的库,可以通过设置cron作业来运行函数(也有其他方法代替cron。请阅读更多信息)。
一个小例子如下:
import discord
from discord.ext import commands
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from apscheduler.triggers.cron import CronTrigger
class Scheduler(commands.Cog):
"""Schedule commands."""
def __init__(self, bot):
self.bot = bot
# Initialize session
self.session = aiohttp.ClientSession()
# Scheduled events
async def schedule_func(self):
def schedule(self):
# Initialize scheduler
schedule_log = logging.getLogger("apscheduler")
schedule_log.setLevel(logging.WARNING)
job_defaults = {
"coalesce": True,
"max_instances": 5,
"misfire_grace_time": 15,
"replace_existing": True,
}
scheduler = AsyncIOScheduler(job_defaults = job_defaults,
logger = schedule_log)
# Add jobs to scheduler
scheduler.add_job(self.schedule_func, CronTrigger.from_crontab("0 * * * *"))
# Every hour
在我们的主菜单中。py文件添加此项(显然,在导入schedule\u jobs.py文件之后):
# Start scheduled commands
scheduler = schedule_jobs.Scheduler(bot).schedule()
scheduler.start()
您可以编写一个在不同线程上定期运行的函数,并检查是否是发送消息的正确时间,如以下示例所示:
from datetime import datetime
import threading
def checkTime():
# This function runs periodically every 1 second
threading.Timer(1, checkTime).start()
now = datetime.now()
current_time = now.strftime("%H:%M:%S")
print("Current Time =", current_time)
if(current_time == '02:11:00'): # check if matches with the desired time
print('sending message')
checkTime()
现在我每天下午3点运行我的cron作业 但是我想一天运行两次cron作业。上午10点30分和下午2点30分 我相信此命令将在上午 10:30 运行。我应该如何在下午 2:30 运行它?
我想创建一个不和谐机器人,每天在特定的时间发送2条消息。下面的代码将使消息进入一个循环,例如每5秒发送一条消息。我如何设置每天发送消息的具体时间,例如,消息1在下午6点,消息2在上午10点。我在这里找到了这段代码,但是没有找到我想要的。
如何将Airflow dag配置为每天在指定时间执行,无论发生什么,就像crons一样。 我知道使用 TimeSensor 可以获得类似的行为,但在这种情况下,这取决于传感器任务,并且可能与 dag 执行时间冲突。 示例:对于传感器方法,如果我让传感器在0小时15分钟运行,但如果dag在稍后执行,则我的任务会延迟,因此即使对于传感器方法,我也需要确保Dag在正确的时间执行。 那么如何确保Dag在指
问题内容: 我是Java的新手,我已经开始从事一个项目。但是,我遇到了一个障碍。我需要一种在一天中的特定时间运行的方法。我已经做了很多搜索,但是找不到任何可以解决问题的方法。我遇到了Timer类,但它似乎以一定的间隔运行。Scheduler类似乎也有同样的问题。我也遇到过Quartz,但是我认为我需要更轻巧的东西,而且只能隔一段时间看一下如何做。 也许只是因为我是新手,所以我错过了一些可以在这些课
我一直在尝试让我的不和谐机器人每天在特定时间运行一个功能。目前,机器人每24小时可以做一些事情,所以我需要做的就是让它在特定时间启动。但是,我不知道为什么我不能让它工作。我尝试了多种解决方案,使用时间表、aioscheduler等。我尝试了其他时候的解决方案,这个问题被问到,但我无法让它们工作。 目前,机器人运行,它没有抛出任何错误,但函数roletask()似乎从未被调用。((出于测试目的,Ro
问题内容: 我正在使用Node,并且需要使此功能每天在午夜运行,这可能吗? 问题答案: 我相信节点计划包将满足您的需求。通常,您希望所谓的cron安排和运行服务器任务。 使用 节点计划 :