0

私は最初のDjangoプロジェクトに取り組んでいます。

1回限りのタスクのために、既存のKey Valueストア(この場合はKyoto Tycoon)に接続する必要があります。つまり、djangoで使用されるメインデータベースについては話していません。

現在、私はうまくいくものを持っていますが、私がしていることが賢明で最適かどうかはわかりません。

views.py

from django.http import HttpResponse
from pykt import KyotoTycoon

def get_from_kv(user_input):

    kt=KyotoTycoon()
    kt.open('127.0.0.1',1978)

    # some code to define the required key
    # my_key = ...

    my_value = kt.get(my_key)

    kt.close()

    return HttpResponse(my_value)

つまり、ユーザーがクエリを実行するたびにデータベースへの新しい接続を開き、終了後に接続を再度閉じます。

または、このようなものの方が良いでしょうか?

views.py

from django.http import HttpResponse
from pykt import KyotoTycoon

kt=KyotoTycoon()
kt.open('127.0.0.1',1978)

def get_from_kv(user_input):

    # some code to define the required key
    # my_key = ...

    my_value = kt.get(my_key)

    return HttpResponse(my_value)

2番目のアプローチでは、Djangoはアプリが最初に起動されたときに一度だけ接続を開きますか?つまり、すべてのユーザーが同じ接続を共有しますか?

どのアプローチが最適ですか?

4

1 に答える 1

1

必要なときに接続を開くことが、より良い解決策になる可能性があります。そうしないと、接続が開かなくなる可能性があります。したがって、接続がまだ開いていることをテストし、開いていない場合は再起動してから続行する必要があります。

これは、コンテキストマネージャーブロック内でクエリを実行できることを意味します。これにより、手に負えない例外が発生した場合でも、接続が自動的に閉じられます。

または、接続プールを用意して、現在使用されていない接続プールを取得することもできます(この場合、これが問題になるかどうかはわかりません)。

それはすべて、接続の作成にどれだけの費用がかかるか、そしてそれらを再利用できることが理にかなっているかどうかに依存します。

于 2012-06-12T10:33:44.577 に答える