最初の部分では、既存の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
に
アクティブなアカウントに配信するためにハンドラーをハングアップし、悪い叔父が自分でそれをプルできないようにします。その結果、すべてのクォータとアクティブユーザーをスパムします。管理者とgoogle kronaのみにアクセスを制限し、 app.yamlに行を追加する必要があります:/summary_mail
- url: /summary_mail script: web.app login: admin
アプリケーションの管理者のリストは、管理者のコンソールから構成されます(男、
しばらくの間、私は考えました-メーリングリストで何をするか、サードパーティのキャプチャをねじ込むか、自分でやる、最終的には最も簡単な方法でした-私は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に実装し、スペルチェッカーのようなことを行うようにしてください。 このサービスが他の誰かに役立つことを願っています。