需要实现多任务的工作流程,支持定时任务、延时任务,能上生产环境,不是玩具。
谢谢各位。
![]() | 1 shimada666 2024-07-15 10:50:15 +08:00 ![]() xxljob 。延时任务原生没有,但是你可能可以参考这篇 https://blog.csdn.net/renkeyutian/article/details/131702203 |
![]() | 2 Lycnir 2024-07-15 10:57:15 +08:00 ![]() |
![]() | 3 masterclock 2024-07-15 11:00:27 +08:00 ![]() temporal |
4 nulIptr 2024-07-15 11:03:39 +08:00 ![]() 简单点也可以普通脚本配合 K8S 的 cornjob 。。。 |
5 saxonblue17 2024-07-15 11:06:29 +08:00 同问题,Go 有吗? |
![]() | 6 SbloodyS 2024-07-15 11:07:08 +08:00 ![]() python 直接上 airflow |
7 changdig 2024-07-15 11:10:51 +08:00 celery |
8 paopjian 2024-07-15 11:12:12 +08:00 面试考了 celery,那企业应该是用过了 |
![]() | 9 amon OP @shimada666 之前在 Java 中用过,刚去 xxl-job 官方 GitHub 仓库貌似对 Python 支持有限啊。 @Lycnir 谢谢推荐,这个能简单介绍一下吗,门外汉了解起来感觉都差不多。 @masterclock 这个看起来挺不错的,不知道会不会太重了。 @nulIptr 小项目,不用 K8s 的方案有没有。 @SbloodyS 谢谢推荐。 |
![]() | 10 whoosy 2024-07-15 11:16:23 +08:00 ![]() python 也就 celery 和 apscheduler 能用 |
12 elron 2024-07-15 11:21:37 +08:00 celery 和 apscheduler 都能满足,而且 apscheduler 支持动态添加周期任务,celery 更偏向生产-消费模型 |
![]() | 13 yangfan1999 2024-07-15 11:22:08 +08:00 apscheduler +1 |
![]() | 14 BBCCBB 2024-07-15 11:25:11 +08:00 支持延迟消息的 MQ, redis zset 也可以实现.. |
![]() | 15 knva 2024-07-15 11:25:35 +08:00 一看到这种就想用青龙 ,怎么回事 |
![]() | 16 rationa1cuzz 2024-07-15 11:30:19 +08:00 celery 和 apscheduler celery 相对稳定,建议搭配 rabbitmq 使用,apscheduler 适合简单场景,要额外处理多进程并发问题,实际使用起来或多或少都有一些问题 |
17 Masterlxj 2024-07-15 11:33:19 +08:00 mq ,方便好用 |
![]() | 18 swim2sun 2024-07-15 11:35:56 +08:00 生产级别+python 能想到的只有 airflow ,但性价比不高,需要部署 N 个服务 不过你既要生产级别的稳定高可用,又要性价比高,感觉比较难,看你自己怎么权衡 |
19 fds 2024-07-15 12:59:43 +08:00 工作流的话其实还有一个 https://github.com/spotify/luigi 。我们生产环境在用。不过需要外部定期触发。 |
![]() | 20 masterclock 2024-07-15 13:37:01 +08:00 @amon 一个 go 的主程序一个数据库,应该也不算重 |
21 Davic1 2024-07-15 13:38:59 +08:00 |
22 Davic1 2024-07-15 13:39:19 +08:00 |
![]() | 23 itskingname 2024-07-15 14:20:30 +08:00 @SbloodyS airflow 太蠢了,我的代码只有 2 行,但是为了写这个 dag ,需要搞十多行代码。 |
24 raycool 2024-07-15 15:33:28 +08:00 apscheduler +1 稳的很 |
![]() | 25 KIDJourney 2024-07-15 15:35:55 +08:00 性价比最高的方案就 while True 了 |
26 orioleq 2024-07-15 15:38:52 +08:00 via iPhone airflow+1 |
27 fred649 2024-07-15 15:46:41 +08:00 via Android 如果是 Django 的话可以试试过时的 Django Q ,蛮好用的 |
![]() | 28 enrolls 2024-07-15 16:10:03 +08:00 所以,多少人天,写个 python 版或者 go 版本的也不困难 :) |
29 yinmin 2024-07-15 16:14:34 +08:00 大项目用 mq ,小项目用 asyncio.create_task 跑一个 task: while True: try: await asyncio.sleep(1) # Check every 1 second ... ... except asyncio.CancelledError: log("Cleanup task cancelled") break except Exception as e: log(f"Error in cleanup task: {e}", "ERROR") |
![]() | 30 R4rvZ6agNVWr56V0 2024-07-15 16:15:53 +08:00 dramatiq 了解一下 |
31 lanlanye 2024-07-15 16:24:52 +08:00 via iPhone 微:asyncio 中小:Celery 大:Temporal |
![]() | 32 Martens 2024-07-15 16:56:47 +08:00 蹲一个 go 的 |
![]() | 33 ETCartman 2024-07-15 19:02:41 +08:00 |
![]() | 34 slowgen 2024-07-15 19:03:57 +08:00 ![]() 其实性价比最高的定时器,应该是各个云厂商的 serverless ,配个触发器,然后选个 curl 镜像,里面扔个 curl 命令请求你的系统,请求头搞个 token 做鉴权就够了。 优先赛博菩萨 cloudflare https://developers.cloudflare.com/workers/examples/multiple-cron-triggers/ 其次国内云 https://help.aliyun.com/zh/functioncompute/user-guide/time-triggers https://cloud.tencent.com/document/product/583/9708 人家云服务的后台有账户管理、日志记录、失败可以重试、有告警,以前的那种额度够你免费用一年,现在一年也就十几二十块,比你自己搭建部署整天修漏洞打补丁还要搞多节点做高可用靠谱多了。 你还要做性价比高的延时任务?计算好触发时间,动态创建/修改/删除函数,把触发器时间设定为触发时间就行了,反正小系统也没多少条任务吧。 |
![]() | 35 Lattez 2024-07-15 19:09:58 +08:00 部署 dolphinscheduler |
![]() | 36 shijingshijing 2024-07-15 19:47:14 +08:00 @SbloodyS 推荐 airflow 是认真的吗?这玩意儿一上来风扇直接起飞,不差钱服务器资源管够做做 ETL 还不错,生产环境做业务实时处理不被老板骂死也被用户投诉死吧。 |
![]() | 37 bronyakaka 2024-07-15 20:28:22 +08:00 Django-Q ,我已经用上了,好用不好用 谁用谁知道 |
38 chunhai 2024-07-15 21:39:46 +08:00 crontab |
![]() | 39 jgarrick 2024-07-15 21:58:40 +08:00 apscheduler 多线程处理经常有问题. 既然都推荐 Celery, 我来推荐使用 Huey |
![]() | 40 DinoStray 2024-07-15 22:25:22 +08:00 sleep 有哪些缺陷呢? |
![]() | 41 ClericPy 2024-07-15 23:06:26 +08:00 azkaban/airflow, 只要有多任务依赖关系或者定时任务的,一定要上靠谱的,不然真脚本地狱 有条件的 Serverless + 自带调度器(比如 steps 或触发器或 gateway api )也挺好,很多运维的事比开发都麻烦 (虽然在写玩具准备接管一个类似 supervisor 的场景) |
![]() | 42 HashV2 2024-07-16 09:12:56 +08:00 我只用过 celery ,参数很多,文档要仔细看,不然在生产环境偶尔还是要出问题的。 另外如果你是用 django 的话,django5.0 在开发 django-tasks, 目前还是在开发阶段,稍微再等等应该就可以用了 |
![]() | 43 6167 2024-07-16 09:35:12 +08:00 celery+redis+rabbitmq ,定时和异步任务都用这个 |
45 flmn 2024-07-16 10:36:46 +08:00 python 不是该先试试 Celery 么 |
![]() | 46 shimada666 2024-07-16 11:22:44 +08:00 @amon 还行吧,目前我们服务 xxl-job 配合 pyxxl 这个 python 接入库在跑,额外配了个钉钉告警,挺稳的调试也方便 |
![]() | 47 shimada666 2024-07-16 11:27:17 +08:00 ![]() 技术选型的时候,其他的 airflow 什么都调研了一遍,最后还是选择 xxl-job ,部署简单,资源占用少,该有的功能(秒级定时、cron 表达式可视化编辑、日志查看、支持任务依赖、任务超时等配置)都有,上手/运维难度极低,如果你想省心,推荐这个 |
48 galileo1214 2024-07-16 13:36:14 +08:00 没有一个人用 crontab 吗 |
![]() | 49 clemente 2024-07-16 13:49:35 +08:00 jenkins job |
![]() | 50 pollux 2024-07-16 15:42:37 +08:00 我推荐使用 https://faststream.airt.ai/latest/ faststream + NATS |
52 julyclyde 2024-07-16 16:33:01 +08:00 @galileo1214 正常人不会用 crontab 的 因为你不能保证 crond 一直在运行 |
53 drymonfidelia 2024-07-17 03:02:26 +08:00 via iPhone @shuimugan cf 这个有漏任务的概率(确定不是网络问题) |
![]() | 54 Latin 2024-07-19 09:51:25 +08:00 |
![]() | 55 walker001 2024-07-21 15:40:44 +08:00 @drymonfidelia 有具体的案例看看么 |
56 byronwind 2024-07-26 17:09:20 +08:00 airflow / celery |
57 gmyxds 2024-09-11 14:23:02 +08:00 我觉得基于 redis 的 zset 很好用, |