- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在这个例子中使用的技术是用于排队的 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/
我是一名优秀的程序员,十分优秀!