Uygulamanızın örneklenmesi ile uyuşması ZORUNLU ise, Flask alt sınıfını kullanmalısınız. Uygulamanın oluşturulması bir süreçtir göz önünde bulundurulduğunda, tüm yaptığınız şey nesnelere bir kaynak ekliyorsa bu gerçekten bir şey yapmaz. Gerçek şu ki, uygulamanın kaynağınız sırasında kaynağınızı kullanması gerekmiyorsa muhtemelen bunu yapmanız gerekmez. Eğer bazı özel kullanım durumunda yoksa
class MyApp(Flask):
def __init__(self, *args, **kwargs):
setattr(self, 'some_resource', SomeResource())
super(Flask, self).__init__(*args, **kwargs)
app = MyApp(__name__)
app.some_resource.do_something()
, modül düzeyinde oluşturduktan ve app.extensions üzerinde saklayarak, muhtemelen bir şişe-uzantısına dönüştürerek, bir sarmalayıcı sınıf yazma daha iyi. Sonra
class MyExtensions(object):
def __init__(self, app=None):
self.app = app
if app is not None:
self.init_app(app)
def init_app(self, app):
app.extensions['my_extension'] = SomeResource()
app = Flask(__name__)
my_extension = MyExtension(app)
Eğer her uygulama için (yukarıda) gibi kendi kaynağını vermek istiyorsanız seçebilir veya Bunun yerine her zaman geçerli uygulama
from flask import _request_ctx_stack
try:
from flask import _app_ctx_stack
except ImportError:
_app_ctx_stack = None
stack = _app_ctx_stack or _request_ctx_stack
class SomeResource(object):
def do_something(self):
ctx = stack.top
app = ctx.app
my_resource = SomeResource()
my_resource.do_something()
işaret ettiği paylaşılan kaynağı kullanmak olsaydınız
Bunu uygulama bağlamında saklamak istediğinizi sanmıyorum çünkü "Flask nesnesinin ne zaman başlatılmaya başlayacağı ve ilk istek geldiğinde örtük olarak bittiği için"
Bunun yerine kaynağınızda modül seviyesi. Daha sonra uygulamayı bir uzantı olarak ekleyebilir ya da evet, konfigürasyonda bile, daha hızlı ve daha hızlı bir uzantı oluşturmak için daha tutarlı ve mantıklı olacaktır.
Uygulama içeriği neden uygun görünmüyor? – delnan
Bu alandaki belgeleri kafa karıştırıcı buluyorum. Bu bağlantıların uygulama oluşturma zamanında kurulumunu yapmak istiyorum, ancak API'nın bunu yapmasının bir yolunu bulamıyorum. Bir örnek verebilir misiniz? – idbentley
Uygulama içeriğini kullanın. Gördüğünüz tam kullanım durumu [docs] (http://flask.pocoo.org/docs/appcontext/) –