首页 > 解决方案 > 芹菜是长时间运行任务的好选择吗?

问题描述

我们正在使用 django、rabbitmq、celery 和 ffmpeg 的组合来读取相机流并将它们分解成图像以存储到文件系统中。此设置 24x7 全天候工作。现在,对于每个摄像机流,我们正在创建一个单独的任务,理论上每个任务都将无限期运行。

如果流发生故障,我们等待 n 帧,创建一个异常并在异常处理程序中,使用 time.sleep 创建 1 分钟的延迟后,我们重新运行 ffmpeg 进程。

我的问题是,这是正确的方法吗?我们应该使用 celery 来读取流吗?芹菜是完成这项任务的正确工具吗?我们可以使用 time.sleep 在 celery 任务中创建延迟吗?会不会影响其他任务?

标签: python-3.xffmpegrabbitmqcelerydjango-celery

解决方案


我们有相对较大的 Celery 集群,我们的许多任务运行数小时,有些甚至运行超过 24 小时,所以我会说是的,Celery 是长时间运行任务的不错选择。我对音频/视频处理知之甚少,所以我认为在 Celery 任务中执行它应该没有任何问题。在最初的想法中,我唯一可能会改变的是:我不会睡觉(是的,你可以在 Celery 任务中调用 sleep )并继续处理,而是运行一个新任务。其他任务根本不应该受到影响。


推荐阅读