flask管理数据库连接:内存:

时间:2012-11-13 11:12:49

标签: sqlite flask

我有一个烧瓶应用程序需要存储来自请求的一些信息。这些信息非常短暂,如果服务器重新启动,我就不再需要了 - 所以我真的不需要持久性。

我已阅读here,可以使用内存中保存的Sqlite数据库。管理数据库连接的最佳方法是什么?在烧瓶文档中,根据需要创建了与数据库的连接,但是我的数据库will be deleted if I close the connection

1 个答案:

答案 0 :(得分:4)

在内存中使用sqlite db的问题是无法从多个线程访问您的Sqlite内存数据库。

http://www.sqlite.org/inmemorydb.html

为了解决这个问题,您可能会有多个进程运行您的应用程序,这使得使用内存中的全局变量也是不可能的。

因此,除非您确定您的应用只需要一个线程或一个进程(这是不可能的),否则您将需要:

  1. 使用磁盘存储状态,例如磁盘上的sqlite db,或者甚至只是解析的某个文件。
  2. 使用与应用程序分开运行的守护进程来管理状态。
  3. 我个人选择2。

    您可以使用memcached,在中央服务器上运行,甚至在您的应用服务器上运行,如果您只有一个。这将允许您暂时将状态(包括python对象!)存储在内存中,甚至可以设置数据到期时的超时值,这些值可能会对您的应用程序有用。

    由于您正在使用Flask,因此您对使用memcached缓存有一些非常好的内置支持,请在此处查看:http://flask.pocoo.org/docs/patterns/caching/

    至于在服务器上运行memcached,它实际上只是apt-getyum install。如果您有任何疑问或挑战,请告诉我,我们很乐意更新。