首页 > 解决方案 > 应用程序之间共享的全局变量

问题描述

假设我有两个应用程序:datavisual. 应用程序data在启动时执行数据库检索。这里的这个线程和这个文档就如何以及在哪里放置启动时执行的代码提供了建议。所以,在应用程序中data

#apps.py

from django.apps import AppConfig

global_df    #want to declare a global variable to be shared across all apps here.

class DataConfig(AppConfig):
    # ...

    def ready(self):
        from .models import MyModel
        
        ...
        df = retrieve_db()   #retrieve model instances from database

        ...
        return df

在上面的代码中,我希望ready()在启动时执行一次并返回df到共享的全局变量(在本例中为global_df)。应用程序visual应该能够(通过import,也许)访问 this global_df。但是,对此的任何进一步修改global_df只能在 app 中完成data

这里的这个线程建议将任何全局变量放在应用程序的__init__.py文件中。但它提到这仅适用于environmental variable.

两个问题:

1 - 我如何以及在哪里声明这样一个全局变量?

2 - 在启动时,如何将只执行一次的函数的输出传递给这个全局变量?

一些线程讨论 Redis 用于缓存目的。但我并不是在寻找那个解决方案,因为这对于我遇到的问题来说似乎有点过头了。

标签: django

解决方案


推荐阅读