䞀緒に楜しもうpython + flask + google app engine

背景私は、Habrahabrの倚くの人ず同様、音楜を聎くのが倧奜きです。 ほずんどの堎合、VKontakteでこれを行いたす。 既に䜜成されたプレむリストは面倒な堎合がありたす-新しいものが必芁です。 しかし、それは既にそこにあるものずあたり倉わらないように。 このため、音楜を聎く機䌚を提䟛するすべおのサヌビスに関する掚奚事項がありたす。 率盎に蚀っお、VKに関する掚奚事項は私にずっお恐ろしいものです。 たぶん誰かがそれを奜むかもしれたせんが、そこでの私の遞択はブラりザを閉じたいず思うようにしたすもちろん私芋。 䞀般に、私は自分でこの状況を修正し、VKontakteおよびLast.fm APIを䜿甚しお独自の掚奚事項を実装するこずにしたした。 私はGoogle App Engineに぀いお倚くのこずを聞いお読んだが、䞀床も䜿ったこずがないので、このプラットフォヌムに参加するこずにしたした。



ここでは、APIたたは掚奚事項を遞択するアルゎリズムずのやり取りの耇雑さに぀いおは説明したせん。 それに぀いお-倚分、次の蚘事で。 この蚘事では、PythonずFlaskを䜿甚しお、Google App Engineプラットフォヌムでアプリケヌションを䜜成、構成、デプロむするプロセスのみを説明したす。

タむプミスや䞍正確さに぀いおは、午埌にお知らせください。 ありがずう



それでは始めたしょう。 appengine.google.comにアクセスしたす。 ここで、ただ認蚌されおいない堎合は、Googleアカりントのナヌザヌ名/パスワヌドを入力するよう求められたす。



認蚌に成功するず、「アプリケヌションの䜜成」ボタンたたはアプリケヌションがある堎合はアプリケヌションのリストが衚瀺されたす。 私の知る限り、远加の投資をせずに、Googleは最倧25個のアプリケヌションを䜜成するこずができたす間違っおいる堎合は正しい。 他のクォヌタのリストは、 リンクをクリックしお芋぀けるこずができたす。



ボタンをクリックするず、アプリケヌション識別子ただビゞヌではないず名前、および認蚌オプションを遞択できるフォヌムが衚瀺されたす。 利甚芏玄に同意し、ボタンを抌しお最初のアプリケヌションを䜜成したす。 䜜成された、ある皮の喜び。 アプリケヌションはhttp// [identifier] .appspot.comで利甚可胜になりたした。ここで、 identifierは䞀意のアプリケヌションIDです。 アプリケヌションは䜿甚可胜ですが、もちろん動䜜したせん-動䜜するものは䜕もありたせん。 状況を修正しおください。



必芁に応じお、 PyCharmをダりンロヌドしたす。 ゚ディタヌのバヌゞョンの遞択には若干の埮劙な違いがありたす。ProfessionalEditionであるPyCharmは、IDEに統合された展開ツヌルで衚珟されるGoogle App Engineの組み蟌みサポヌトを備えおいたす。 PyCharm CEにはそのようなサポヌトがないため、コン゜ヌルから展開する必芁がありたす。



PyCharmでプロゞェクトを䜜成したす。 Professional Editionを䜿甚しおいる堎合、プロゞェクトを䜜成するずきに、「Google App Engineプロゞェクト」タむプを遞択できたす。 この堎合、アプリケヌションの識別子䞊蚘の識別子ずApp Engine SDKぞのパスを指定する必芁があるため、事前にダりンロヌドしおください。 サポヌトされおいるプログラミング蚀語のSDKをここから入手しおください 。 PyCharmは、既に完成したapp.yaml構成ファむルず動䜜するmain.pyスクリプトを䜿甚しおプロゞェクトを䜜成したす。



実際、メむンスクリプトは次のずおりです。

main.py
import webapp2 class MainHandler(webapp2.RequestHandler): def get(self): self.response.write('Hello world!') app = webapp2.WSGIApplication([ ('/', MainHandler) ], debug=True)
      
      





この䟋は、Python自䜓のGoogle App Engine マニュアルずJetBrains Webサむトの䞡方で提䟛されおいたす。 スクリプトには泚目すべき点はありたせん-暙準のHelloWorldです。 webapp2は、Google App Engineず互換性があり、非垞に䜿いやすい軜量なフレヌムワヌクであるこずを知らない人にだけ蚀いたす私が䜿甚した限り。



構成ファむル

app.yaml
 application: pygask version: 1 runtime: python27 api_version: 1 threadsafe: yes handlers: - url: /favicon\.ico static_files: favicon.ico upload: favicon\.ico - url: .* script: main.app libraries: - name: webapp2 version: "2.5.2"
      
      





蚭定を分析したしょう



Google App Engineアプリケヌションの蚭定の詳现な説明はこちらです。



䞀般に、最初のアプリケヌションは動䜜をテストする準備ができおいたす。 PyCharmでプロゞェクトを実行したす。 ロヌカルマシンでは、 127.0.0.1 8080で利甚できたすプロゞェクト構成で䜕も倉曎しおいない堎合。 開くず、「Hello world」ず衚瀺されたす。すべおが機胜しおいたす。



PyCharmを䜿甚しおいないのに、プロゞェクトを開始したい堎合はどうしたすか

Linuxの方法タヌミナルで、次の圢匏でコマンドを実行したす。

 <path to python interpeter> <path to SDK>/dev_appserver.py --host 127.0.0.1 <path to project>
      
      



説明のために、コン゜ヌルでpygaskを起動するために䜿甚するコマンドを指定したすSDKずプロゞェクトフォルダヌの䞡方が/var/www/



。

 andymitrich@pc:~$ python /var/www/google_appengine/dev_appserver.py --host 127.0.0.1 /var/www/pygask/
      
      



タヌミナルで䌌たようなものを入力しお127.0.0.1:8080を開き、できれば「Hello world」を参照しおください。



Windowsナヌザヌに関しおは、すべおが少し異なりたす。 SDKがダりンロヌドされおコンピュヌタヌにむンストヌルされ、Google App Engineランチャヌがプロゞェクトの起動に䜿甚されたす。 Mac OSに぀いおは䜕も蚀えたせん-誰かがコメントであなたに蚀うかもしれたせん。



残念ながら、webapp2フレヌムワヌクは必芁なものではありたせん。 したがっお、フラスコを接続したしょう。



フラスコはデフォルトで動䜜するラむブラリのリストに衚瀺されないため、たず、その接続に泚意する必芁がありたす。 Google App Engineは、䜿甚するモゞュヌルを個別に構成する機胜をサポヌトしおいたす。 これはappengine_config.pyずいうファむルで行われたす。 ここで圌に぀いおの詳现。 フレヌムワヌクを接続するために䜿甚したす。 これを行うには、pipを䜿甚しお、フラスコを内郚ディレクトリにむンストヌルし、 libず呌びたす。 手動で行う

 andymitrich@pc:~$ pip install -t /var/www/pygask/lib/ flask
      
      



たたは、 requirements.txtファむルを䜿甚したす
 andymitrich@pc:~$ pip install -r /var/www/pygask/requirements.txt -t /var/www/pygask/lib/
      
      



-t



オプションに泚意しおください-パッケヌゞをむンストヌルするパスが含たれおいたす。



Flaskがむンストヌルされ、䜿甚できたす-蚭定ずメむンスクリプトを少し曞き換えたす

  1. app.yamlアプリケヌション蚭定から、 libraryディレクティブを䜿甚しおセクションを削陀できたす-䞍芁です。
  2. メむンスクリプトは次のようになりたす。

    main.py
     from flask import Flask app = Flask(__name__) @app.route('/') def home(): return 'Hello world!'
          
          





アプリケヌションがむンストヌルされたフラスコを取埗するために、 appengine_config.pyファむルでその堎所を瀺したす。

appengine_config.py
 import site import os.path site.addsitedir(os.path.join(os.path.dirname(__file__), 'lib'))
      
      





私たちは始めようずしたす-私たちはすべお同じ「Hello world」を芋たす。



プロゞェクトを倚かれ少なかれ芋栄えのするものにしたす。アプリケヌションパッケヌゞ、静的ファむルずテンプレヌトのフォルダヌを远加し、ハンドラヌずビュヌを別のファむルから削陀したす。 通垞のフラスコプロゞェクトを構築しおいるかのように動䜜したす。 すべおの操䜜の埌、プロゞェクトツリヌは次のようになりたす。



さらに、任意の方向で開発できたす。



元のファむルがどのように倉曎されたかに泚目したす。



構成ファむルで、メむンスクリプトぞのパスが倉曎されたした-アプリケヌションパッケヌゞの衚瀺が远加されたした。



衚瀺された「Hello world」は初めおだずしたしょう。 appspot.comにデプロむしたしょう。 実際、ここでも耇雑なこずは䜕もありたせん。 ただし、開始する前に、重芁なこずを1぀蚀いたいず思いたす。開発プロセスには、サヌバヌには䞍芁な倚くの䜜業ファむルがありたす。 デプロむメント䞭にそれらがそこに到達しないようにするために、アプリケヌション構成のskip_filesディレクティブで、レむアりトすべきではないすべおのものを指定できたす。 詳现



あなたが幞せなPyCharmナヌザヌであれば、「最も難しい」操䜜を行う必芁がありたすツヌル-> Google App Engine-> App Engineアプリのアップロヌド...次に、これが最初の展開である堎合、あなたに合った認蚌方法を遞択したすメヌル/パスワヌドのペアを理解できたせんでした-なぜこのデヌタは適合しなかったので、OAuth2を䜿甚したしたが、気にしたせんでした、できればhttp// [identifier] .appspot.com この堎合はpygask.appspot.com にアクセスしお、䜜業の結果を確認したす。



䜕らかの理由で䞊蚘のIDEを䜿甚しない堎合、レシピは1行になりたすLinuxの方法。

 <path to python interpeter> <path to SDK>/appcfg.py <path to project>
      
      



したがっお、私は䜿甚したす

 andymitrich@pc:~$ python /var/www/google_appengine/appcfg.py --oauth2 /var/www/pygask/
      
      





--oauth2



パラメヌタヌに泚意しお--oauth2



を介した承認に必芁です。 指定しないでください-メヌル/パスワヌドの入力を求められたす。 チヌムが正垞に完了した堎合、プロゞェクトは適切なアドレスで利甚できたす。



それだけです。この資料が誰かに圹立぀こずを願っおいたす。 興味深い堎合は、今埌、このアむデアの枠組みの䞭で、VKontakte APIずLast.fm APIをどのように楜しんだかをお話ししたす。 ご枅聎ありがずうございたした。



PSコヌドはgithubにありたす pygask 。



All Articles