0

私はいくつかのロジックを継続的に実行するためにAzure Webジョブを使用しています。関数はシングルトン関数です。しかし、Webアプリケーションの再起動後にこの機能を実行しようとすると、「ロック待ち」メッセージが表示されます。同じ関数の別のインスタンスがロックを保持していることを意味しますか?どうすれば解決できますか? Azure Webジョブのシングルトン機能がロックされています

機能:

namespace Ns 
{ 

    public class Functions 
    { 
     [Singleton] 
     [NoAutomaticTriggerAttribute] 
     public static async Task ProcessMethod() 
     { 
      while(true){ 
      //process logic here 
      await Task.Delay(TimeSpan.FromSeconds(20));} 
     } 

    } 
} 

メインプログラム:

namespace ns 
{ 
    class Program 
    {  
     static void Main() 
     {    
      var host = new JobHost(); 
      host.RunAndBlock();    
     } 
    } 
} 

私が得たメッセージ:

enter image description here

答えて

1

Singleton attribute descriptionによると、ロックが機能中にadquiredされますBlobリースによる実行。

この関数が実行されている間に別の関数インスタンスがトリガーされると、ロックを待機し、定期的にポーリングします。

アプリケーションサービスプランのインスタンスが複数ある場合は、複数のWebジョブが存在するため、ダッシュボードが実行中に他のWebジョブのロック状態を表示している可能性があります。

view the blob lease locksあなたのストレージアカウントで作成することができます。

もう1つの方法は、Listener Singletonsを試してみることですが、手動トリガーでは試したことがありません。

+0

同じWebジョブのすべてのインスタンスを停止することはできますか?また、Webアプリケーションをデプロイすると、付属のWebジョブが自動的にデプロイされますか?ありがとう! – condor126

+0

また、私はそれを見ることができますが、私は正しい機能のロックをどのように得るのですか?ありがとう! – condor126

+0

「正しい」機能とはどういう意味ですか?ロックとシングルトンは、関数の1つのインスタンスが実行されるように設計されており、同じ関数の他のインスタンスはロックアウトされています。スケーリングを制限する関数を定義するために使用されます。 webjobインスタンスの量は、実行しているApp Service Planのインスタンスの量と同じです。 –

0

Azureでプロダクション機能を無効にし、上記のようにlistenerlockPeriodを15秒に設定しました。

これにより、ロック動作が大幅に低下しました。

関連する問題