我对Flask世界有点新意,我想知道如何在Flask应用程序的后台每秒钟左右最佳地查询数据库。我希望能够运行一个查询,然后获取该数据并在满足特定条件的情况下对其执行某些操作,但我只是有点挂断了将代码放在Flask应用程序中的位置,以便始终运行
答案 0 :(得分:1)
你的用例是什么?我的猜测是你正在尝试提前查询数据库,这样你想要的数据就会在网页请求进入时准备就绪。
如果我正确理解Flask,它本身并不支持后台任务。一切都基于Web请求。如果您在谷歌搜索“烧瓶背景任务”,您会发现Flask文档建议您使用Celery作为后台工作人员。您不一定要使用Celery,因为有许多系统可以执行此操作。 Celery也支持定期任务。你甚至不一定需要芹菜这样做;您可以在Python中编写自己的守护进程,以便每秒唤醒并查询数据库。
一个问题是你要对查询中的数据做些什么?您是否需要将其提供给Flask Web请求?如果是这样,您将不得不以某种方式将数据存储在可以从Flask处理程序中检索的位置。执行此操作的常用方法是memcached或其他一些缓存层。
现在您可能正在考虑尝试从Flask应用程序或其他进程内调度程序中使用Python线程或多处理库,然后通过某种全局状态共享结果。这可能行不通。 Flask使用多个进程/线程来处理传入的请求,你永远不知道你将要进入哪个进程。请参阅Preserving global state in a flask application