在 dask 或 Dramatiq 中带有 (bind=True) 的芹菜?

Posted

技术标签:

【中文标题】在 dask 或 Dramatiq 中带有 (bind=True) 的芹菜?【英文标题】:Celery with (bind=True) in dask or dramatiq? 【发布时间】:2019-02-19 21:08:14 【问题描述】:

我使用 celery 已经有一段时间了,但由于缺乏 Windows 支持,我正在寻找替代方案。

***竞争对手似乎是 dask 和 Dramatiq。我真正在寻找的是可以将 1000 个长时间运行的任务分配到 10 台机器上的东西。每个人都应该在完成任务后接下一个工作,并给出一个带有更新的回调(在 celery 中,这可以通过 @task(bind=True) 很好地实现,因为可以访问任务实例本身并且我可以发送状态返回给发送更新的实例)。

dramatiq 或 dask 中是否有类似的功能可用?任何建议将不胜感激。

【问题讨论】:

【参考方案1】:

在 Dask 方面,您可能正在寻找期货接口:https://docs.dask.org/en/latest/futures.html

期货具有“已完成”、“待处理”或“错误”等基本状态,您可以随时查看。如果您想要更复杂的消息,那么您应该查看 Dask Queues、PubSub 或其他任务间通信机制,也可以从该文档页面获得。

【讨论】:

以上是关于在 dask 或 Dramatiq 中带有 (bind=True) 的芹菜?的主要内容,如果未能解决你的问题,请参考以下文章

基于列或函数的 Dask 数据帧拆分分区

在 for 循环中将 Python Dask 系列转换为列表或 Dask DataFrame

将Dask包的Pandas DataFrame转换为单个Dask DataFrame

气流+芹菜或dask。为了啥,啥时候?

compute() 在 dask 中做啥?

使用 dask 和多处理优化内存使用