Nay*_*ish 12 python django singleton thread-safety
我想在我的Django应用程序中保存运行线程.由于我不能在模型或会话中这样做,我想把它们放在一个单身人士中.我已经检查了一段时间,并没有真正找到一个很好的方法.
有谁知道如何在python中创建一个线程安全的单例?
编辑:
更具体地说,我想做的是我想实现某种"随时算法",即当用户按下按钮时,返回响应并开始新的计算(新线程).我想要这个线程运行,直到用户再次按下按钮,然后我的应用程序将返回它设法找到的最佳解决方案.要做到这一点,我需要保存线程对象的某个地方 - 我想将它们存储在会话中,显然我不能做什么.
底线是 - 我有一个FAT计算,我想在服务器端,在不同的线程,而用户使用我的网站.
除非你有很好的理由 - 你应该在不同的进程中执行长时间运行的线程,并使用Celery来执行它们:
Celery是一个基于分布式消息传递的开源异步任务队列/作业队列。它专注于实时操作,但也支持调度。
执行单元(称为任务)使用多处理、Eventlet 或 gevent 在一个或多个工作节点上并发执行。任务可以异步执行(在后台)或同步执行(等待就绪)。
djangonauts 的 Celery 指南: http://django-celery.readthedocs.org/en/latest/getting-started/first-steps-with-django.html
对于单例和在任务/线程之间共享数据,除非您有充分的理由,否则您应该使用数据库层(也称为模型),并谨慎对待数据库锁和刷新过时的数据。
更新:关于您的用例,定义一个Computation带有字段的模型status。当用户开始计算时,就会创建一个实例,并且任务将开始运行。该任务将监视该status字段(偶尔检查一次数据库)。当用户再次单击该按钮时,视图会将状态更改为user requested to stop,从而导致任务终止。
| 归档时间: |
|
| 查看次数: |
3783 次 |
| 最近记录: |