我很高兴接受这可能是不可能的,更不用说合情合理了,但是有可能保持对我创建的对象的持久引用吗?
例如,在我的一些视图中,我的代码看起来有点像这样(为了清晰起见,简化了):
api = Webclient()
api.login(GPLAY_USER,GPLAY_PASS)
url = api.get_stream_urls(track.stream_id)[0]
client = mpd.MPDClient()
client.connect("localhost", 6600)
client.clear()
client.add(url)
client.play()
client.disconnect()
Run Code Online (Sandbox Code Playgroud)
这将是非常整齐,如果我可以只保留一个引用api,并client在我的项目,尤其要避免反复API登录gmusicapi.我可以申报settings.py吗?(我猜这是一个可怕的想法),或者通过其他方式保持与他们持久的连接?
理想情况下,我会有一些功能,如get_api()检查现有对象仍然可以并返回它或根据需要创建一个新对象.
您不能拥有每个应用程序实例化一次的任何内容,因为您几乎肯定会有多个服务器进程,并且不能跨进程轻松共享对象.但是,每个过程一个肯定是可能的,也是值得的.为此,您只需要在相关文件中的模块级别实例化它(例如views.py).这意味着当Django首次导入该文件时(在该过程中),它将自动实例化,您可以将其称为该文件中的全局变量.只要进程执行,它就会持续存在,并且当创建新进程时,将实例化新的全局变量.