Python 使用芹菜将任务从组件A发送到组件B

Python 使用芹菜将任务从组件A发送到组件B,python,celery,Python,Celery,我想在这个例子中使用的技术是芹菜排队技术和python组件实现技术 假设一个简单的项目包含两个组件。一种是连接到API并收集数据的web应用程序。组件2是一个可以处理数据的处理器。当web应用程序从API获得一段数据时,它应该将一个任务发送到一个任务队列中,其中包括刚刚爬网的数据,然后处理器使用该数据来处理数据 对于这样的任务,这是否是一种明智的方式值得商榷,而不是我问题的重点。 我的问题是,处理事物的任务是在处理器中定义的,因为它们说明了应该执行什么处理功能,并且该功能的定义显然在处理器中。既

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

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

对于这样的任务,这是否是一种明智的方式值得商榷,而不是我问题的重点。 我的问题是,处理事物的任务是在处理器中定义的,因为它们说明了应该执行什么处理功能,并且该功能的定义显然在处理器中。既然web应用程序无法访问任务定义,他如何将任务传达给处理器

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

您是否将处理器作为web应用程序的依赖项


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

您所描述的可能是芹菜最常见的用例之一。看看有多少人在StackOverflow上问Django/Flask+芹菜问题。。。如果您是Django用户,那么会有一个完整的文档描述如何准确地执行您想要的操作。事情应该与其他框架类似

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

据我所知,您不必(我不使用任何web框架),但可能确实需要这样做,因为您需要与芹菜进行更深入的集成。如果您的web应用程序知道芹菜任务名称及其参数,那么它可以安排它运行,而不需要实际访问Python代码。这是通过使用
发送任务(任务名称,…)
完成的

您是否将处理器作为web应用程序的依赖项

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

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

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