我对Flask世界有点陌生,我想知道如何在Flask应用程序中每隔一秒左右最好地查询数据库。我希望能够运行一个查询,然后获取该数据,如果它满足某些条件,就对其进行处理,但我只是有点挂断了在我的Flask应用程序中放置代码的位置,因此它总是在运行。
你的用例是什么?我的猜测是,您正在尝试提前查询数据库,以便在web请求传入时准备好所需的数据。
如果我理解正确,Flask本身并不支持后台任务。一切都基于网络请求。如果你在谷歌上搜索“flask background task”,你会发现flask docs建议你使用芹菜作为背景工作者。你不一定要用芹菜,因为有很多系统可以做到这一点。芹菜也支持定期任务。你甚至不需要芹菜来做这件事;您可以用Python编写自己的守护进程,以便每秒醒来并查询数据库。
一个问题是,您将如何处理查询中的数据?您是否需要将其提供给Flask web请求?如果是这样的话,你将不得不把数据藏在一个可以从烧瓶处理程序中检索到的地方。实现这一点的常用方法是memcached或其他缓存层。
现在,您可能正在考虑尝试从Flask应用程序或其他进程内调度程序内部使用Python线程或多重处理库,然后通过某种全局状态共享结果。这可能行不通。Flask使用多个进程/线程来处理传入的请求,你永远不知道你将进入哪个进程。请参见在烧瓶应用程序中保存全局状态