4

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

我在这里读到可以使用保存在内存中的 Sqlite 数据库。管理数据库连接的最佳方法是什么?在烧瓶文档中,与数据库的连接是按需创建的,但如果我关闭连接,我的数据库将被删除

4

1 回答 1

5

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

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

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

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

  1. 使用磁盘来存储状态,例如磁盘上的 sqlite db,甚至只是您解析的一些文件。
  2. 使用与您的应用程序分开运行的守护进程来管理状态。

我个人会选择选项2。

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

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

至于让 memcached 在您的服务器上运行,这真的只是一个apt-get或一个yum install。如果您有任何问题或挑战,请告诉我,我很乐意更新。

于 2012-11-14T15:00:10.800 回答