4

リクエストからの情報を保存する必要があるフラスコアプリケーションがあります。情報は非常に短命であり、サーバーが再起動された場合、私はそれをもう必要としません-したがって、私は本当に永続性を必要としません。

ここで、メモリに保持されているSqliteデータベースを使用できることを読みました。データベース接続を管理するための最良の方法は何ですか?フラスコのドキュメントでは、データベースへの接続はオンデマンドで作成されますが、接続を閉じるとデータベースが削除されます

4

1 に答える 1

5

インメモリsqlitedbを使用する際の問題は、Sqliteインメモリデータベースに複数のスレッドからアクセスできないことです。

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

問題をさらに進めるために、アプリを実行しているプロセスが複数ある可能性があります。これにより、メモリ内のグローバル変数を使用することも問題外になります。

したがって、アプリが単一のスレッドまたは単一のプロセスのみを必要とすることが確実でない限り(これはありそうにありません)、次のいずれかが必要になります。

  1. ディスクを使用して、ディスク上のsqliteデータベースや、解析するファイルなどの状態を保存します。
  2. アプリケーションとは別に実行されるデーモン化されたプロセスを使用して、状態を管理します。

私は個人的にオプション2を選びます。

これにはmemcachedを使用でき、中央サーバーで実行することも、1つしかない場合はアプリサーバーで実行することもできます。これにより、状態(Pythonオブジェクトを含む!)を一時的にメモリに保存でき、データの有効期限が切れるタイミングのタイムアウト値を設定することもできます。これは、アプリに役立つ可能性があります。

Flaskを使用しているので、memcachedキャッシュを使用するための非常に優れた組み込みサポートがあります。ここで確認してください:http://flask.pocoo.org/docs/patterns/caching/

サーバー上でmemcachedを実行することに関しては、実際にはそれはただのことapt-getですyum install。ご質問やご不明な点がございましたら、お気軽にお問い合わせください。更新させていただきます。

于 2012-11-14T15:00:10.800 に答える