我已经使用 Flask-AppBuilder 构建了一个“大型”应用程序,并且有 2 个问题我没有看到答案。
- 有没有办法将大型应用程序“拆分”为多个组件(类似于蓝图所做的)。
- 我的业务逻辑大部分都在 View 中结束了,但是......其中一些感觉不合适。我在模型中添加的东西很少,再次感觉不对。这是倾向于创建长时间运行的进程的逻辑,所以我一直在测试 Celery。
其中任何一个的任何例子都会很可爱。
我已经使用 Flask-AppBuilder 构建了一个“大型”应用程序,并且有 2 个问题我没有看到答案。
其中任何一个的任何例子都会很可爱。
您使用什么框架并不重要,但是一旦应用程序增长,您可能希望隔离关键逻辑。既是出于上述原因,也是为了面向未来(您可能希望将来迁移到新的前端,而无需重写繁重的工作)。
我通常为此设置一个 redis 工作程序,并仅使用例如烧瓶来通过函数调用触发队列。这也使应用程序更具可扩展性(并发用户、更多数据),因为如果需要,您可以简单地启动更多工作人员来监听您的队列。
在本质上:
from redis import Redis
from rq import Queue
from rq.job import Job
conn = Redis()
q = Queue(connection=conn)
然后作为烧瓶路由中的示例(对于 appBuilder,使用视图或创建自己的库)调用:
result = q.enqueue('utils.your_function_name',args=(id,))
在这里查看 RQ 以获得更多示例,以及如何监控您的工作状态等。