我有一个应用程序,我想单独运行计划的任务。因此,我需要每1小时刷新一次Mysql中的DateTime时间,然后根据时间判断TODO。我不知道该用哪一套,有推荐吗?如果我不依赖于代码来执行定时任务,这有可能吗?任何帮助都是非常感谢的!
发布于 2022-01-05 07:35:21
如果要使用代码在Asp.net核心中实现计划的任务,可以使用以下包:
Quartz:
https://www.quartz-scheduler.net/documentation/quartz-3.x/quick-start.html#download-and-install
Hangfire:
https://docs.hangfire.io/en/latest/getting-started/aspnet-core-applications.html
TimedJob:
https://www.nuget.org/packages/TimedJob/
就个人而言,如果您只需要每小时更新一次数据库DateTime,我建议使用TimedJob,因为使用起来太方便了。
我在这里做了一个简单的演示,您可以参考它:
在启动类中的配置:
1.在ConfigureServices方法中配置应用程序服务。
services.AddTimedJob();2.在配置方法中创建应用程序的请求处理管道。
app.UseTimedJob();创建一个类来编写计时器代码
public class Schedule : Job
{
[Invoke(Begin = "2022-01-05 9:00", Interval = 60*60, SkipWhileExecuting = true)]
public void Run()
{
Console.WriteLine("--------------------");
Console.WriteLine(DateTime.Now);
TaskA();
}
private void TaskA()
{
//Execute your update sql statement
Console.WriteLine("Task A:Successfully updated DateTime!");
}
}为了方便演示效果,设置时间较短。如果需要1小时,将其设置为60 * 60 * 1000。
此外,我没有在这里执行数据库操作,您可以在TaskA方法中执行您的sql语句。
结果:

实现MySQL定时任务的方法有两种:
1.使用MySQL事件计时任务来使用MySQL的事件调度,首先需要在服务器上启用event_scheduler,然后才能处理它。
2.使用Linux的定时任务crontab
本文有详细的示例,您可以阅读它,希望这些对您有所帮助:
https://www.mysqltutorial.org/mysql-triggers/working-mysql-scheduled-event/
发布于 2022-01-05 00:15:47
只需创建一个事件:
CREATE EVENT update_todos
ON SCHEDULE EVERY '1' DAY
STARTS CURRENT_TIMESTAMP
ON COMPLETION PRESERVE ENABLE
DO
BEGIN
-- your query here;
END;此外,确保事件调度程序是打开的。可以在配置文件中设置event_scheduler系统变量:
[mysql]
event_scheduler=ON通过执行set全局,还可以在运行时动态设置event_scheduler系统变量:
SET GLOBAL event_scheduler=ON;https://stackoverflow.com/questions/70586404
复制相似问题