首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Django视图更改全局变量

Django视图更改全局变量
EN

Stack Overflow用户
提问于 2012-03-26 04:58:28
回答 2查看 703关注 0票数 0

我的django应用程序包含一个循环,它由urls.py中的以下代码启动:

代码语言:javascript
代码运行次数:0
运行
复制
def start_serial():
    rfmon = threading.Thread(target=rf_clicker.RFMonitor().run)
    rfmon.daemon = True
    rfmon.start()

start_serial()

该子线程内的循环引用了global_vars.py中定义的全局变量。我想在视图中更改此变量的值,但它似乎不起作用。

来自views.py:

代码语言:javascript
代码运行次数:0
运行
复制
import global_vars

def my_view(request):
    global_vars.myvar = 2
    return httpResponse...

如何让循环内的函数知道此视图已被调用?

该循环监听来自遥控器的信号,并根据按下的按钮将数据保存到数据库中。web界面中有几个视图,可更改遥控器的设置。在更改这些设置时,循环内的状态需要确保数据不会被保存。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-26 07:31:05

我同意Ignacio Vazquez-艾布拉姆斯的观点,不要使用全局变量。尤其是在你的用例中。这种方法的问题是,当您将应用程序部署到wsgi容器或其他容器时,您的应用程序的多个实例将在不同的进程中运行,因此在一个进程中更改全局变量不会更改其他进程中的全局变量。

我也不推荐使用线程。如果您需要一个异步处理任务的长时间运行的进程(似乎就是这种情况),可以考虑使用Celery( http://celeryproject.org/)。它真的很擅长这一点。

票数 2
EN

Stack Overflow用户

发布于 2012-03-26 05:06:21

我承认没有利用它们的经验,但是如果你还没有看过Django的信号功能,它们似乎是这种活动的主要候选者(而且比全局变量更合适)。

https://docs.djangoproject.com/en/dev/ref/signals/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9863999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档