Google App Engineでのシンプルなファイルホスティング

確かにあなたの人生のそれぞれがあなたにとって便利なファイルホスティングを見つけました。そして、それが広告の量にあなたの目を傷つけ始めたことを発見した後、条件はすでにはるかに忠誠度が低くなり、一般的に新しいものを見つける時です。 さらにアクションを実行するには、2つのオプションがあります。新しい、まだツイストされていないファイルホスティングサービスを見つけて、問題が発生するまで使用するか、独自のソリューションを編成します。 2番目のオプションでは、ホスティングサービスを購入するか(高品質のサービスを備えた真正なホスティング業者を見つけるまでコーンをいっぱいにする必要があります)、クラウドサービスを使用できます。

GoogleのGoogle App Engine(GAE)は、Googleによるかなり興味深い検索結果であることが判明しました。これにより、1日あたり1 GBの着信トラフィックと1 GBの発信トラフィックを含む最大5 GBのファイルを保存できます。つまり、データは世界中の複数のサーバーに一度に保存されます!
GAEの機能は、ファイルを操作するためのやや非標準のインターフェイスです。このため、この記事で説明する独自のサービスを作成しました。

GAEを使用すると、Java、Go、Pythonでアプリケーションを作成できます。 最初の2つの言語は私にはほとんど馴染みがないので、Pythonでサービスを作成しました。 以前はバージョン2.5しか使用できなかったため、いくつかの問題が発生しましたが、最近2.7のサポートが追加されたため、古いアプローチを思い出す必要はありません。

GAEの使用を開始するには、Pythonバージョン2.7とオペレーティングシステム用のappengine SDKをダウンロードしてインストールします。 ナレーションはLinux SDKバージョンの例で行われます(WindowsとMacには便利なグラフィカルインターフェイスがあるため、以下で説明するように、コンソールからすべてを実行できますが、理解しやすいでしょう)。

将来設定を簡単にするために、http://appengine.google.comで事前に「アプリケーションの作成」ボタンをクリックしてアプリケーションを登録することをお勧めします。 アプリケーションの一意の識別子を入力するように求められます。それに応じて、appspot.comのサブドメインとして使用できるようになります。また、識別子とは異なり、今後変更できる名前を入力するよう求められます。 他のすべての設定は変更できません。この場合、あまり重要ではありません。 開始するには、識別子に一致する名前のフォルダーを作成します。このフォルダーには、アプリケーションに関連するすべてのファイルが保存されます。

アプリケーションは、少なくともapp.yamlファイルで構成されます。このファイルには、アプリケーションの名前、ランタイムのバージョン、URLハンドラーの説明、さまざまなエラーが含まれます。 URLハンドラーは、リンクがチェックされる正規表現と、必要なファイルの説明で構成されます。 ハンドラーのスクリプト名に、拡張子(通常は拡張子ではなく、アプリケーション内のオブジェクト)を配置する必要があることに注意してください。「。py」ではなく「.app」

このアプリケーションでは、app.yamlファイルは次のようになります。

application: fileshare #   fileshare     version: 1 runtime: python27 api_version: 1 threadsafe: true handlers: - url: /favicon\.ico static_files: favicon.ico upload: favicon\.ico - url: /delete/.* #     script: main.app login: admin #        . - url: /get/.* #      ,    ,    login: admin  login: required,         Google . script: main.app - url: .* # ,            . script: main.app login: admin 


ファイルの保存用に、App Engineには特別なBlobstoreストレージがあり、データ用にDatastore(非リレーショナルデータストレージモデルが使用されていることに注意してください。データへのアクセスには、DjangoのORMに似た独自のフレームワークがあります)。 このアプリケーションでは、各ファイルには、BlobReferencePropertyオブジェクトを含む組み込みの一意の整数識別子(IDによるオブジェクトキーの取得を意味する)を使用して、データストア内のFileRecordオブジェクトが割り当てられます。

 class FileRecord(db.Model): blob = blobstore.BlobReferenceProperty() 


URLをより具体的に分析し、一般的にアプリケーションを初期化するために、WSGIApplicationの代表であるファイルの最後にアプリオブジェクトが作成されます。

 app = webapp2.WSGIApplication( [('/', MainHandler), ('/upload', UploadHandler), ('/delete/([^/]+)?', DeleteHandler), ('/get/([^/]+)?', GetHandler), ], debug=False) 


受信したURLに応じて、アプリケーションは対応するハンドラーを開始します。 この場合、app.yamlのハンドラーは、許可の設定が含まれているため、部分的に複製されます。

アプリケーションは次のように機能します。


アプリケーションをテストするには、コンソールでデバッグサーバーを実行します。

 python google_appengine/dev_appserver.py <   > 

サーバーがネットワーク経由でアクセスできるようにするには、dev_appserver.pyの後に--address 0.0.0.0パラメーターを追加します。

問題がなければ、アプリケーションのダウンロードを開始できます。

 python google_appengine/appcfg.py update <   > 

次に、Googleアカウントのログインとパスワードの入力を求められます。その後、アプリケーションがダウンロードされ、 appid.appspot.comで利用可能になります(appidは一意の識別子です)。
code.google.comのアプリケーションのソースコード(使用するには、app.yamlファイルを編集するだけです):http://code.google.com/p/fileshare-appengine

既存のファイルホスティングに対する利点:
誤解:

更新:Windowsでスクリプトをロードする段階でUnicodeDecodeErrorタイプのエラーがスローされる場合、レジストリブランチHKEY_CLASSES_ROOT / Mime / Database / ContentTypeからキリル文字を含むすべてのキーを削除すると役立つ場合があります
更新2:ソースコードはhttp://code.google.com/p/fileshare-appengine/source/browse/で表示できるようになりました
更新3:GitHub https://github.com/SergeyBurma/fileshare-appengine

Source: https://habr.com/ru/post/J137797/


All Articles