0

同じコードを使用して、わずかに異なる構成の約 50 のサイトを持つセットアップがあります。同じコードを何度も何度も展開し、異なるフォルダーやリポジトリに複製するのではなく、Flask でサイトの作業コードをある種のライブラリとして一元化する方法はありますか?

Django では、次のようなものがあります。

https://docs.djangoproject.com/en/dev/ref/contrib/sites/

いくつかのアイデア

  1. UWSGI の 50 個のインスタンスを展開し、同じコードと異なる構成を複製します

  2. コードのインスタンスが 1 つだけになるように、一種のモジュールまたは拡張機能として追加された Python コードを使用して、UWSGI の 50 個のインスタンスをデプロイします

  3. コードのインスタンスを 1 つだけ持ち、異なるホスト名を処理する UWSGI のインスタンスを 1 つデプロイします: http://flask.pocoo.org/docs/patterns/appdispatch/

複製しているコードは、API をクエリして結果を表示するように設計されています。サイト間の違いは 2 つあります。

  1. テンプレート - サイトは似ていますが、同一ではありません。CSS と画像がわずかに異なります。

  2. API クエリ。小規模なサイトのほとんどは、町や都市用です。これは、これらのサイトからの API リクエストが、その領域でのみ結果を返すようにわずかに変更されることを意味します。

    • sitelondon.com は、デフォルトでロンドンのアイテムのみを API に照会する場合があります
    • sitehtml.com は、デフォルトで「html」キーワードを持つアイテムの API を照会する場合があります

私が重視しているのは、ユーザーにとってのパフォーマンスです。最初は十分な 2GB の RAM を搭載したサーバーでこれらを実行します。

4

2 に答える 2

1

#3が最良の選択肢であるという@Paoloに同意します。

Web サーバーで URL を書き換えることで、さらに簡素化できます。http://sitelondon.com/exampleのクエリが になりhttp://sitelondon.com/london/example、のクエリが にhttp://sitehtml.com/exampleなるように URL を書き換えるとhttp://sitehtml.com/html/example、ルートを介してサイトを簡単に取得できます。

@app.route('/<site>/example')
def example(site):
    return render_template(site + '/example.html')

このセットアップでは、サイト名に基づいてサブフォルダーにテンプレートを整理することができ、適切なテンプレートを選択することは、テンプレート パスを構築することになります。

これが役立つことを願っています!

于 2013-09-10T16:27:06.053 に答える