ロシア鉄道のチケットの可用性を監視する記事を書いています、パート2





最初の部分では、既存のhttp API rzhdを最も単純なラッパーで記述する方法を示しました。 このパートでは、電子メールによる通知を使用して実際の監視を継続して記述します。 プロジェクトサイトはまだここにあり、 ここは予備です。



最初の部分では、アプリケーションはスレッドセーフではありませんでしたapp.yaml設定リストされました:
threadsafe: false
      
      



この状況を修正するには、変更します



 def main(): application.run() if __name__ == "__main__": main()
      
      





に:

 app = webapp2.WSGIApplication([ ('/', MainPage), ], debug=False)
      
      







当然、私もいくつかのコードを書き直さなければなりませんでしたが、このすべての利点は次のとおりです: スレッドセーフ:false appengineは新しいセッションをキューに入れ、各セッションの新しいインスタンスを開始します(わずかな時間差で)。



次に、メールとクラウンによる起動という2つの問題を解決する必要がありました。クラウンから始めましょう。このためには、作業ディレクトリに cron.yamlファイルを作成し、クラウンをデーモンにアドレスする場所と頻度を指定する必要があります。



 cron: - description: mail summary job url: /summary_mail schedule: every 1 hours
      
      







 /summary_mail
      
      



アクティブなアカウントに配信するためにハンドラーをハングアップし、悪い叔父が自分でそれをプルできないようにします。その結果、すべてのクォータとアクティブユーザーをスパムします。管理者とgoogle kronaのみにアクセスを制限し、 app.yamlに行を追加する必要があります:



 - url: /summary_mail script: web.app login: admin
      
      







アプリケーションの管理者のリストは、管理者のコンソールから構成されます(男、 学童はハッカーです。心配する必要はありません。このアプリケーションに管理者はいません。最後の投稿を公開するときのログからわかるように、それを「パンチ」する必要はありません... appengine)。

しばらくの間、私は考えました-メーリングリストで何をするか、サードパーティのキャプチャをねじ込むか、自分でやる、最終的には最も簡単な方法でした-私はGoogleアカウントを使用し、Google認証を通過した後(もちろんすべてがリダイレクトを通過し、パスワードを保存しません)ユーザーのメールボックス。空き場所に関する手紙を受け取ります。 メールを操作するための機能は最も簡単です:



 def sendMail(account, body): mail.send_mail(sender = "rzd wrapper support <robot.sender.rzd@gmail.com>", to = account.email(), subject = "train report", html = body, body = body)
      
      







はい、テキスト表示とhtmlの文字の本文は私にとって同じですが、すぐに修正します。

完全を期すために、放射線源はまだそこにあると言わなければなりません 、もちろん、時間の経過とともにそこに整理します。また、RZDが完全ではなく、ストローを置くことができたので、まれではあるが操作上のエラーがあるかもしれませんが、それはどこにもありません、一般に、機能は非常に機能しており、ソースの誰もがローカルアプリケーションを起動し、必要に応じて終了できます。 Cronは1時間に1回チケットをポーリングします。 現時点では、1つの列車のみを購読できます。 将来の計画では、Jinja2を固定し、より快適なインターフェイスを作成します。 オープンソースの形態に対するインターフェイスをAPPENGINEに実装し、スペルチェッカーのようなことを行うようにしてください。 このサービスが他の誰かに役立つことを願っています。



All Articles