如果多个用户在同一时刻调用Python函数,它是否工作?
Does Python function work if multiple user call it at same instant?
我使用的是Django框架。我已经建立了一个web应用程序使用Python和Django。我没有在我的应用程序中使用任何类或oops概念。我只是在使用python的函数。
用于例如
def addnum(request):
a=request.GET.get('a')
b=request.GET.get('b')
res=a+b
return HttpResponse(json.dumps(res), content_type="application/json")
现在我使用ajax从客户端调用这种函数并返回我的结果。
我的问题是,如果多个用户在同一时刻访问应用程序,那么这个'addnum'函数将在同一时刻被调用。那么它将如何运作呢?
它会因为一些用户和错误的输出而中断吗?它会降低性能并增加响应时间吗?它会并行工作吗?一切都会正常工作吗?
当多个用户"同时"访问它时,它实际上不是在同一时间。假设你正在使用uWSGI来服务你的webapp,这意味着你的webapp有一堆处理请求的worker。
让我们举一个最简单的例子,你只有一个工人。在这种情况下,一切都是顺序的。uWSGI自动按照请求的顺序为您排队,并将其一个接一个地提供给您的web应用程序。希望这是清楚的,它不会导致任何竞争条件,关于不正确的输出。
但是,如果您说每秒收到10个请求,这意味着一个工作程序需要在10ms内处理每个请求。如果它不能这样做,那么请求将开始堆积。
同样,假设你"瞬间"收到10个请求。然后一个请求可能在10ms内返回,第二个请求在20ms内返回,第三个请求在30ms内返回等等(这实际上是不准确的,因为还有网络往返时间,但我们现在忽略它)
现在假设您设置了多个worker(单独的进程)来帮助更快地处理这些请求。但是由于它们是独立的进程,它们不共享内存。所以这里没有竞态条件。(请注意,如果您做诸如写入/读取文件等操作,则会发生变化)
在这里,您可以让多个工作者并行处理请求。但它仍然只是uWSGI维护一个请求队列,当工人完成处理请求并释放时,它将其提供给工人。
- 回调函数在python代码中离线
- 调用Javascript中的Python函数,读取静态文件(Flask)
- 在字典中存储函数[Python]
- 如何在新创建的模块中从Odoo v8中的Javascript文件中调用python函数
- 为什么模块化幂函数在 Python 和 Javascript 中对于大数字的工作方式不同
- 如何在 Python 中获取此 JavaScript 函数的返回值
- 用javascript调用python函数,并在网页上显示返回的字符串
- python函数调用javascript自动完成
- 使用JavaScript中的高阶函数概念,用Python编写纯函数代码
- 使用没有URL的python脚本从网页下载文件,调用onClick函数
- Javascript vs Python 关于 Python 'map()' 函数
- python中的闭包.我可以在函数的本地上下文上关闭吗?
- 如何将用python编写的函数编译为JavaScript(emscripten)
- 将 python list 传递给 javascript 函数
- 从python Appengine中的Javascript函数中检索变量
- 如何在 Python 中的变量中存储子变量和函数
- 如何使用 QT/Python 从 Javascript 调用C++函数
- 从 python 中的 Javascript onclick 函数下载文件
- 有没有其他方法可以在纯python中实现javascript的onClick()函数
- Python有办法通过函数传递参数吗