2017-02-10 20 views
0

AppサービスプランのAzure関数appに関数があります。Azure関数がフリーズする(?)

私の機能はPythonで書かれています。 Tweepyモジュールを使用してTwitter APIからデータを消費し、その結果をAzure Storageのファイルに保存する前にローカルの一時ファイルに書き込むループが含まれています(これはAppenedBlobServiceを使用しています)。

問題

問題は、ちょうど凍結時々私の関数です(?)。要求を出したり、結果を出したり、結果を保存したり、いつでもフリーズすることができます。それは止まらない、私がモニターペインを見ると、まだ動いている(青の3つの点)。それを止める唯一の方法は、インスタンスを再起動する必要があることです(しばらくすると、青色の点はオレンジ色の感嘆符になります)。それはどんなエラーも表示しないし、何も結果を生成しない。それは例外を発生させません、最終的にブロックが実行されない、それは関数がちょうどそこにあるように感じます、新しい行を実行するのではなく、何も停止しません。

これは完全に困惑しているのは、これが実行中に異なるステップで発生するということです。ときにはAPIを呼び出すと(そのメソッドは返されないように見える)、ときには結果を保存するときにStorage(BlockBlobService経由で)でブロブの存在をチェックするときに発生することがあります。

昇天

私の仮定は、APIに問題があるということでした。しかし、ローカルでテストしたところ、APIに問題はありません。私は何の問題もなく連続したリクエストをたくさん作ることができますが、Azure機能では3〜5回のリクエスト後にフリーズします。 (それはずっと遅いです。) もう一つの可能​​性は、ファイルをStorageに保存するのが間違っているということですが、結果が正しく保存されることがあります。保存してからAPI呼び出しにループバックしてスタックしたり、API呼び出しを終了したりしてスタックしたり保存したりすることはありません。

すべては、ローカル環境で完全に正常に動作しますので、ここで続ける方法はわかりません。私は各ステップの間に印刷することでそれをトレースしようとしましたが、上記のようにハングする場所を発見しましたが、コードの塊がうまく動作するため、なぜそれがハングするのかは分かりません。

どのような問題が発生しているか、どうすればこの問題をデバッグする必要がありますか?ありがとう!

答えて

3

EDIT

これはhereを参照によりアプリケーションサービス/機能(2.7.8)とurllib3モジュールによって使用されるのpythonのバージョンに問題です。 WebアプリケーションがPythonのバージョンを更新するまで、アプリケーションをクラッシュさせているエラーは無視するか、ログに記録することができます。

あなたが機能するのpythonのカスタムバージョンをもたらすことができます:https://github.com/Azure/azure-webjobs-sdk-script/wiki/Using-a-custom-version-of-Python


それはAPIを使用した同時実行の問題があることが可能です。可能であれば、すべてのロジックを入力/出力バインディングに移動してみてください。また、並行性を制限しようとする可能性もあります。ストレージキューのトリガーを使用し、host.jsonでbatchSizeを1(同時性なし)に設定することを検討してください。

ログを見ると、tweepyライブラリからの関数にいくつかのエラーがあります。

Hereは、ログにアクセスする方法の記事です。<sitename>.scm.azurewebsites.net/debugConsole - >LogFiles/Application/Functionsをご覧ください。また、ログの振る舞いをhost.jsonで変更することもできます。

+0

キューには、そのようなときに常に1つのアイテムしかありません。あなたが私の機能を見ることができれば嬉しいです。サイト:http://data-analysis.azurewebsites.net/、関数名は_searchで終わります – Mind

+0

LogFiles/Applicaton/Functionsのログを調べましたが、Functionポータルの情報より多くの情報はありません。いくつかのステップで何かを印刷する)。 Kuduでは、これらの呼び出しログはMonitorペインに表示されているものと同じです。関数がフリーズすると、ステータスは「決して終了しない」ため、バインドパラメータの値とコンテキスト以外の情報はありません。私はそれらのtweepyエラーログを正確にどこに見つけることができますか? – Mind

関連する問題