我想確定當我的Web API方法被兩個客戶端同時調用時會發生什麼。爲了做到這一點,我在Python中生成兩個異步請求:ASP.NET Web API 2處理異步請求
rs = (grequests.post(url, data = json), grequests.post(url, data = json))
grequests.map(rs)
的請求調用我的WebAPI非異步方法正在改變我的資源,這是一個靜態類的實例。從我的理解,API請求不應該同時運行,這是我想要的,因爲我不希望這兩個請求干擾彼此。但是,如果我在API方法中設置了一個斷點,那麼這兩個請求似乎併發(並行)。這會導致一些不想要的結果,因爲這兩個請求正在並行地更改相同的資源。
有什麼方法可以確保Web API非併發地處理請求嗎?
鎖定您的共享資源。 –
@BrianDriscoll請參閱我的編輯。我已經確定資源被鎖定在一個隊列中,但是,我仍然在請求之間發生干擾。 –
Web API請求是否同時運行取決於您的API託管方式,因此不會在代碼中確定。如果您在IIS中運行,則您的請求將由單獨的工作進程併發處理。不知道更多關於API的信息,我會認爲你有設計問題而不是實現問題。 –