是否有可能只在我的项目中使用Django模型模块?

是否有可能只在我的项目中使用Django模型模块?

问题描述:

我正在开发一个使用芹菜的小型独立python应用程序。我已经使用django框架构建了该应用程序,但我的应用程序仅限于后端。这意味着用户不需要访问我的站点,我的应用程序仅用于接收来自芹菜的任务队列和对数据库执行操作。为了在数据库上执行操作,我需要使用Django模块。是否有可能只在我的项目中使用Django模型模块?

我所试图做的是消除我的Django应用程序的其它部分,并且只使用芹菜和Django模型模块(包括运行这些需要的依赖)。

总之,我简单的芹菜应用程序将从我的Redis代理运行接收指令,并使用Django模型在数据库中执行操作。

可以做到这一点吗?如果是这样,怎么样?

这里是我的项目结构:

myproject/ 
--manage.py 
--myproject/ 
----celery.py 
----models.py 
----settings.py 
----tasks.py 
----urls.py 
----wsgi.py 

这里是我的settings.py:

你只需要

env['DJANGO_SETTING_MODULE'] = 'myproject.settings' 
django.setup() 

(假设你设置你的数据库,并在设置INSTALLED_APPS东西。 py)

+0

你能多解释一下吗,我不明白。我需要在哪里使用这个? – Elisha512

在您的项目的settings.py中,只需在开头添加。

import django 
import os 

sys.path.insert(0, your_project_path) # Ensure python can find your project 
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings' 
django.setup() 

然后你可以使用Django的ORM,记得删除你不Django的设置需要中间件。

你有一个python脚本,需要一些芹菜任务,你也需要Django ORM来进行数据库交互。

  1. 您可以设置的Django项目

  2. 你的目的创建一个应用程序,包括在settings.py和应用内的在models.py创建所需的模型。 ref:What minimal files i need to use django ORM

  3. 设置执行芹菜的环境。即,redis服务器。将djcelery与django项目集成在一起。为芹菜任务目的。 您可以使用芹菜节拍进行定期任务。或延迟。 ref:http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html

  4. 您可以在celery任务中导入和使用像正常一样的django模型。

  5. 和芹菜的任务,你可以使用

    我运行。芹菜-A任务工--loglevel = info

    ii。芹菜 - 任务击败-l信息。如果您想要为定期执行而编写的任务使用节拍。

  6. 如果任务只需要立即异步执行或时间间隔后,您可以使用TASK_NAME。delay() 使用delay()调用python脚本中的任务() 我认为在脚本中使用djcelery可能需要在脚本中设置django env。 只是做django.setup()。

我想这会帮助你解决你的问题。