Django:使视图一次只运行一次(互斥/锁定/信号量)

时间:2018-06-20 23:55:52

标签: python django concurrency

是否有一种简单的方法(理想的是内置的还是库的)在Django视图中一次最多允许1个线程/进程?我猜是一种信号量。理想情况下,如果进程已经在运行,我可以使其他线程返回响应。

它不需要处理任何分布式系统,因此对于我的用例来说,本地管理是可以的。

使用Django 1.11

2 个答案:

答案 0 :(得分:0)

我可能缺少您的意思,即“在Django视图中一次最多有1个线程/进程”

最简单的方法(我不建议这样做)是运行: ./manage.py runserver --nothreading

现在,这将其锁定到单个python进程-一次到单个请求,而不是每个视图..而是每个请求。

文档:https://docs.djangoproject.com/en/dev/ref/django-admin/#cmdoption-runserver-nothreading

答案 1 :(得分:0)

您可能只使用文件或其他东西

类似

def my_view(request):
    if os.path.exists("/some/file.txt"):
       return HTTPResponse(open("/some/file.txt","rb").read())
    try:
       open("/some/file.txt","wb") as f:
          f.write("Actively running this already1")
       return render_template(my_template,...)
    finally:
       os.remove("/some/file.txt")