我很高兴地接受这可能是不可能的,更不用说合理了,但是是否可以保持对我创建的对象的持久引用?在
例如,在我的一些视图中,我的代码看起来有点像这样(为了清晰起见,简化了):
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()
如果我可以在整个项目中只保留一个对api
和{gmusicapi
重复登录api,这将非常方便。我可以在settings.py
中声明它们吗?(我猜这是一个糟糕的主意),或者通过其他方式与他们保持持久的联系?在
理想情况下,我会有类似get_api()
的函数来检查现有对象是否仍然正常,并根据需要返回或创建一个新的对象。在
不能持久化对象引用,但可以在内存django缓存或memcached django缓存中存储某些内容。在
Django缓存 https://docs.djangoproject.com/en/dev/topics/cache/
另请参见 Creating a Persistent Data Object In Django
不管怎样,他们的生命都会和死刑一样长。在
你不能让每个应用程序实例化一次,因为你几乎肯定会有不止一个服务器进程,而且对象不容易跨进程共享。然而,每个过程都有一个是绝对可能的,也是值得的。为此,您只需要在相关文件中的模块级实例化它(例如视图.py). 这意味着当Django第一次导入该文件时(在该过程中),它将自动实例化,您可以在该文件中将其作为全局变量引用。只要进程继续,它就会一直存在,当新进程被创建时,一个新的全局变量将被实例化。在
相关问题 更多 >
编程相关推荐