python-3.x - 芹菜是长时间运行任务的好选择吗?
问题描述
我们正在使用 django、rabbitmq、celery 和 ffmpeg 的组合来读取相机流并将它们分解成图像以存储到文件系统中。此设置 24x7 全天候工作。现在,对于每个摄像机流,我们正在创建一个单独的任务,理论上每个任务都将无限期运行。
如果流发生故障,我们等待 n 帧,创建一个异常并在异常处理程序中,使用 time.sleep 创建 1 分钟的延迟后,我们重新运行 ffmpeg 进程。
我的问题是,这是正确的方法吗?我们应该使用 celery 来读取流吗?芹菜是完成这项任务的正确工具吗?我们可以使用 time.sleep 在 celery 任务中创建延迟吗?会不会影响其他任务?
解决方案
我们有相对较大的 Celery 集群,我们的许多任务运行数小时,有些甚至运行超过 24 小时,所以我会说是的,Celery 是长时间运行任务的不错选择。我对音频/视频处理知之甚少,所以我认为在 Celery 任务中执行它应该没有任何问题。在最初的想法中,我唯一可能会改变的是:我不会睡觉(是的,你可以在 Celery 任务中调用 sleep )并继续处理,而是运行一个新任务。其他任务根本不应该受到影响。
推荐阅读
- imap - IMAP:如何发送额外的命令文本
- c - 实现 container_of 时的指针对齐
- selenium - 如何从硒的自动建议下拉列表中选择值
- android - Android Jetpack Navigation、BottomNavigationView 与 Youtube 或 Instagram 类似正确的后退导航(片段后退堆栈)?
- c# - 用 EF 核心替换 hasRequired 是什么?
- mailchimp - mailchimp 活动发送类型 webhook
- web - 基于下拉的数据查询网站 - 如何提取底层数据?
- javascript - 找不到模块“setupDevtools”React-Native
- postgresql - 将 VMware VCenter 备份从 6.0 还原到 6.0 失败
- reactjs - 从 15.x 升级后,Google 在 React 16 中出现错误