ロシア鉄道のチケットの可用性を監視する記事を書いています、パート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に実装し、スペルチェッカーのようなことを行うようにしてください。 このサービスが他の誰かに役立つことを願っています。

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


All Articles