我正在使用 Django 1.9.3。我有一个包含多个应用程序的项目。我想在项目启动时更新其中一个应用程序的表。
用例:
例如,假设我想在我的网站上销售商品。我有一个包含模型项目的应用程序。我在 Django 之外有一个网络服务,它提供服务“give_all_items_available()”。我想向我的用户提供使用该网站的项目列表。所以我认为我必须使用该网络服务输入定期更新我的数据库(在启动时和每隔一段时间)。
我已经编写了所有代码,如下所示(这是一个示例):
from my_app.models import My_table
def on_startup():
my_thread = Thread(execute = populate_tables, loopmode = True, background = True) # thread running in loopmode in background
my_thread.start() # starts the thread and returns
def populate_tables()
response = call_webservice() # let's imagine this method returns data for creating a new model instance
My_table(response).save() # this save() isn't threadsafe in this example, but that's not my point ;-)
我的问题是我不知道在哪里编写这段代码
尝试:
到目前为止,对于 Django 1.6.5,我带来了一些来自init我的应用程序的 .py 文件。它正在工作,但我认为它非常丑陋(用“导入”启动一个线程看起来真的像隐藏代码)。
我在 Django 1.9 中看到了“ready()”方法。但文档中写的是不处理此方法中的模型,所以我很困惑。
我可以在启动服务器的命令中添加启动代码,但此启动代码是面向应用程序的,在我看来,项目与它无关。
你会推荐什么?
如果需要,我很乐意提供更多信息。
提前致谢,
为什么你不使用Celery http://docs.celeryproject.org/en/latest/index.html反而?我知道您在问如何在启动时填充您的 Item 表,但是...我认为这里的计划芹菜任务适合并以自然的方式解决您的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)