我想确定当我的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的信息,我会认为你有设计问题而不是实现问题。 –