【发布时间】:2018-07-09 15:33:58
【问题描述】:
我有一个图像检测器模块,加载大约需要一分钟。我想在服务器启动时实例化一次,并在视图中使用它。我知道我可以在服务器从urls.py 启动时运行代码,所以我尝试了以下操作:
urls.py
from django.contrib import admin
from django.urls import include, path
from module import Module
urlpatterns = [
path('module/', include('project.urls')),
path('admin/', admin.site.urls),
]
module = Module()
views.py
from django.http import HttpResponse
from project.urls import module
def end_point(request):
module.do_stuff()
return HttpResponse("It works!")
这种方法不起作用,因为我无法从此文件中导入任何变量。除此之外,如果urls.py 死了,我会得到NameError: name 'module' is not defined。我不使用数据库,我只想要我的模块的 REST API。我想使用 Djongo,因为我将在我项目的其他服务中使用它。
总结:我想要一个在服务器启动时实例化一个对象的地方,并且能够在视图中使用我的对象。
谢谢!
【问题讨论】:
-
这不是重复的,但可能会引起您的兴趣。 stackoverflow.com/a/51082877/7692463。 AKA 你可以使用信号。查看我的实现。
-
我很确定你应该在你的 manage.py 上使用它,当他第一次使用 manage.py runserver 启动服务器时,他将启动你的模块,但你必须在整个应用程序中访问