1 Star 1 Fork 0

PasteCode/PasteTask

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

PasteTask

项目介绍

本项目是为了解决定时器问题,比如一个项目有一个定时器用于回收资源,比如你希望每天的凌晨3点执行,如果你的项目是集群部署的,那就有问题了,谁去执行这个任务,有了《PasteTask》就可以搞定这个问题了。

支持本地定时器和远程定时器。远程一般用于集群使用,远程的有任务报表和记录等。

推荐使用Spider六边形进行发布和管理PasteTask!

如果你需要修改代码,推荐使用PasteBuilder用于代码生成,PasteBuilder是一个VSIX的扩展,直接右键Domin的Model即可生成需要的接口和管理页面等。

以上的推荐都可以在 https://soft.pastecode.cn/Home/Index 找到!

以我目前使用的情况来说,部署了一个PasteTask,运行了一个月,占用服务器内存资源维持在110MB,里面任务大概20个,这个资源消耗应该算非常低了的吧!

部署发布 请查看 https://soft.pastecode.cn/Detail/17

内置彩蛋

其实这个项目是由PasteTimer和PasteXXXX合并而来的,而这个PasteXXX就是一个彩蛋项目,这个项目能干嘛用呢???自我挖掘哈!!!

技术框架

名称 说明
ABP.vNext 基础框架
StackExchange.Redis Redis缓存
Z.EntityFramework.Plus EF扩展
PostgreSQL,Mysql,Mssql,Sqlite 数据库
SixLabors.ImageSharp 处理图形的
Swashbuckle SwaggerAPI文档
Redis,Memory 缓存组件
Serilog 日志模块
PasteCluster 集群组件
PasteTemplate 项目模板
PasteBuilder 代码工具
PasteSpider(建议采用此部署) 部署工具

项目优势

1.有别于现有的比如Qzart Hangfire等

2.资源消耗更小

3.采用注入模式,至于单例还是瞬时啥的注入由客户端决定,是否任务重复也由客户端决定

4.源码简洁,主要就在SingleHostedService。

5.计时器的方式也简单,直接按照秒进行,进行正则匹配或者轮询匹配。

6.可控的并发量配置。并发量需要配合SQL的并发量,一个并发一般对应一个sqlpool了

安装运行

1.下载源码,或者发布文件,如果是源码需要VS2022 NET6.0打开后发布到文件夹,

如果你使用mysql数据库

1.使用VS2022打开本项目 首先在appsettings.json中修改数据库链接字符串,也就是在ConnectionStrings:MainConnectionString后面 然后在appsettings.json中修改TaskConfig:DataType的值修改为mysql

2.设置PasteTask.HttpApi.Host为启动项目(就是右侧解决方案里面这个项目加粗了)

3.右键2的这个项目进行生成,看看是否生成成功,成功成功后继续往下执行

4.点击上方的工具栏 --》视图 --》其他窗口 --》程序包管理器控制台

5.在VS工具下方找到这个窗口,然后在这个程序包管理器控制台的里面的 默认项目(J)后面下拉选择项目为src\PasteTask.EntityFrameworkCore

6.下下方输入如下命令add-migration databaseinit -Context MysqlDbContext

7.如果要同步数据库表结构给数据库,则继续执行命令update-database -Context MysqlDbContext

如果你使用其他数据库

则可以跳过上面的步骤,只需要在发布的文件夹中修改appsettings.json中的相关配置,系统在启动的时候会自己检查数据库是否创建,数据库表是否创建,默认账号是否配置等操作。

2.查看文件夹根目录是否有Dockerfile文件

3.打开appsetting.json修改对应的数据库链接字符串和redis的链接串

4.构建镜像,启动运行,比如访问的地址为http://127.0.0.1:36000/

5.打开swagger地址 比如 http://127.0.0.1:36000/swagger/

6.找到接口/api/task/user/SystemStart按照要求执行它,系统会创建数据库和默认数据 inittoken默认为空,后续可以自己修改,意思就是安装者和调用者是自己,所以可以引入一个guid啥的进行校验。

7.打开 http://127.0.0.1:36000/ 按照需求登录系统。

思路解析

1.使用EF,可以很好的支持多种数据库,理论上支持所有的关系型数据库,自己加对应的dll重新编译即可,个人推荐postgresql数据库,超级节省资源。

2.任务调度基于接口实现,所以需要在启动的时候注入接口的实现,具体的可以查看PasteTask.WebTest的案例。分本地和远端的

尚余问题

1.数据库要是挂了,整个系统就挂了,当使用远端模式的时候。

2.Redis是否使用集群模式,自己配置。

3.master的切换过程中的任务,会有问题,因为没有Master在主持工作!这个过程虽然很短,如果master非正常停止,则会经历最大一个心跳包的时间周期。

4.关于nginx的upstream需要自己手动配置。

5.对应的客户端是否断开,查看代码,内部有自我的重试机制,超过一定次数就抛弃掉这个客户端节点了。

6.在master切换过程中部分信息可能丢失或延迟,比如noticenotify的压缩推送。

7.master发送任务给Node,如果node进行反馈的时候出错了,不一定会统计到结果,如果master发送给Node发生错误,会根据配置的进行多次尝试.

8.是否支持星期模式,比如每周六凌晨3点进行备份操作 Mon 2022-09-16 03:00:00 星期在前面然后空格,然后是时间的格式yyyy-MM-dd HH:mm:ss,可以参照这个进行正则匹配

#更多信息 更多免费实用的项目可以查阅 https://soft.pastecode.cn/Home/Soft 如果使用遇到问题,你也可以加入我们的QQ群 296245685

MIT License Copyright (c) 2025 PasteCode Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

一款使用.NET6.0编写的任务调度器 如果作为单机使用,则只需要查看 Services.AddLocalTaskService()的相关说明即可! 如果作为集群使用,则需要安装对应的服务端,然后查看Services.AddRemoteTaskService()的说明! 最小的执行频率是1秒!如果任务过多的话,需要拆分! 展开 收起
README
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C#
1
https://gitee.com/pastecode/paste-task.git
git@gitee.com:pastecode/paste-task.git
pastecode
paste-task
PasteTask
master

搜索帮助