2011-12-23 3 views
1

私が取り組んでいるWebアプリケーションは、最初のセットアップや初期化を行う必要があります。WebAppは何かを初めて行う必要があります。そのロジックを配置する場所はどこですか?フラスコまたはdjango

ここで、そのロジックを配置するのに適した場所はありますか?私は構成/セットアップが各リクエストに/またはリクエスト前に存在していないかどうかを確認する必要はありません。

アプリの起動時に正常な設定がある場合にチェックを行い、次に/のデフォルトルートを設定/設定ページに変更して元に戻すことを検討していました。しかし、それは自己変更コードのようなものです。

これは、ウェブアプリケーションで設定が必要で、その後少し時間がかかる設定に基づいてものをインデックスするために必要です。したがって、設定が完了した後も、インデックス作成が完了するまでしばらく待つ必要があります。したがって、設定/設定が完了した後であっても、それに続くすべてのリクエストは、「待機インデックス作成」メッセージを表示する必要があります。

私はフラスコを使っていますが、これはdjangoにも関係していると思います。

EDIT:私は今このように考えています。

起動すると、また、セットアップに/ルートを変更 、app.configを上firstrunオブジェクト=それがない場合 はconfig.pyからデフォルトを追加し、ステータスを入れて、MY_SETTINGSためappconfig.pyをチェックビュー機能。 セットアップビュー機能はapp.config.statusオブジェクトをチェックして実行します ユーザー入力後、設定が正常な場合は、必要に応じて設定を行います。
app.config.statusを削除するか、「indexing」に変更します。 、私はそれのメッセージをフラッシュするためにapp.config.statusを確認するbefore_request関数を持つことができます。 または、app.configの代わりにflask.gを使用してステータスを保存できますか?

+0

非常に早くコードを最適化しているように思えます。このチェックでパフォーマンスが低下すると思われる場合は、大部分の成功を期待しているときにtry/except文を使用する方が効率的です。 –

+0

リクエストの1%未満でしかヒットしないことがわかっているときは、各リクエストのチェックを行うのが間違っています。 – rapadura

+0

さて、あなたが設定されていないことに気がついたときにあなたのビューで例外を発生させ、ミドルウェア(少なくともDjangoで)でキャッチすることができます。 –

答えて

1

適切な方法あなたは(ジャンゴで、それはあなたが簡単すぎて、カスタムコマンドを追加することができ、デフォルトmanage.pyだろう)フラスコを使用して、このようなinitinstallとしての機能を定義する場合、好ましくFlask-Scriptを経由して、CLIスクリプトを作成します

from flaskext.script import Manager 
from ... import app 
manager = Manager(app) 
@manager.command 
def init(): 
    """Initialize the application""" 
    # your code here 

これはドキュメントに記載されており、Webアプリケーション自体にアクセスしたときに実行されたと容易に推測できます。

+0

しかし、私は、ユーザがアプリケーションの設定/構成へのWebインターフェイスを持っていて、cliではなくしたい。それから私は彼らに設定を変更するように伝えただけかもしれません。pyも同様 – rapadura

+0

WebアプリケーションのポイントはWebアプリケーションであり、サービスとしてのソフトウェアではありません。パッケージをダウンロードしてクリックしてください。ブラウザでアプリケーションをすぐに利用できます。 – rapadura

+0

設定データの種類については言及していませんでした。パスやデータベース接続データ(通常は後で変更したくないものなど)のようなものであれば、私の答えはより適切なものになりました。それ以外にも、Python Webアプリケーションでは通常、設定ファイルや.htaccessを編集する必要があります(PHP(cr)アプリケーションのように)WSGIアプリケーションを「アップロードして使用する」だけではないからです。 – ThiefMaster

関連する問題