gpt4 book ai didi

python - 使用celery将任务从组件A发送到组件B

转载 作者:行者123 更新时间:2023-12-01 06:56:52 26 4
gpt4 key购买 nike

我想在这个例子中使用的技术是用于排队的 Celery 和用于组件实现的 python。

想象一个简单的项目包含两个组件。一种是连接到 API 并收集数据的 Web 应用程序。组件 2 是一个可以处理数据的处理器。当网络应用程序从 API 获取一段数据时,它应该将一个任务发送到任务队列中,其中包括刚刚爬取的数据,然后由处理器使用这些数据来处理数据。

这是否是完成此类任务的明智方法是有争议的,而不是我的问题的重点。我的问题是,处理事物的任务是在处理器内定义的,因为它们声明应执行哪些处理函数,并且该函数的定义显然是在处理器内。现在网络应用程序无法访问任务定义,他如何将任务传达给处理器?

您是否必须在网络应用程序中保留处理器源代码的副本?

您是否使处理器成为网络应用程序的依赖项?

处理这种情况的最佳实践方法是什么?

最佳答案

您所描述的可能是 Celery 最常见的用例之一。看看有多少人在 StackOverflow 上询问 Django/Flask + Celery 问题...如果您是 Django 用户,这里有一个完整的 section in the Celery documentation描述如何准确地做你想做的事。事情应该与其他框架类似。

Do you have to hold a copy of the source code of the processor within the web app?

据我所知,您不必这样做(我不使用任何 Web 框架),但由于与 Celery 进行了更深入的集成,您可能确实需要这样做。如果您的 Web 应用程序知道 Celery 任务名称及其参数,它可以安排它运行,而无需实际访问 Python 代码。这是使用 send_task(task_name, ...) 完成的。

Do you make the processor a dependency of the web app?

正如我上面所写,有几种使用它的方法。如果您想要更紧密的集成,那么是的。如果您只想使用 send_task() 运行任务并获取结果,那么您的 Web 应用程序应该只依赖于 Celery。

What is the best practice approach to handle such a scenario?

遵循 Django 指南。我建议你独立运行 Celery,运行一些任务,这样你就可以了解它如何分配工作的基本原理等。

关于python - 使用celery将任务从组件A发送到组件B,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58774966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com