芹菜是长期运行任务的不错选择吗?

问题描述

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

如果流下降,我们等待n个帧,创建一个异常,并在异常处理程序中,使用时间创建1分钟的延迟。sleep之后,我们将重新运行ffmpeg进程。

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

解决方法

我们的Celery集群相对较大,我们的许多任务要运行数小时,有些甚至要运行24小时以上,因此我可以说,Celery是长期运行任务的不错选择。我对音频/视频处理了解得很少,因此我认为在Celery任务中执行此操作不会有任何问题。我可能会更改原始想法的唯一事情如下:我不会睡觉(是的,您可以在Celery任务中调用sleep)并继续处理,但改为运行一个新任务。其他任务完全不会受到影响。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...