是否可以仅在我的项目中使用Django模型模块?

时间:2016-08-31 00:01:57

标签: python django django-models celery

我正在开发一个使用Celery的小型独立python应用程序。我使用django框架构建了这个,但我的应用程序只是后端。这意味着用户不需要访问我的站点,我的应用程序只是为了从celery接收任务队列和在数据库上执行操作而构建的。为了对数据库执行操作,我需要使用Django模块。

我想要做的是消除我的django应用程序的其余部分并仅使用celery和django模型模块(包括运行这些模块所需的依赖项)。

简而言之,我的简单芹菜应用程序将运行接收来自我的redis代理的指令,并使用django模型在数据库中执行操作。

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

这是我的项目结构:

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

这是我的settings.py:

3 个答案:

答案 0 :(得分:1)

在项目的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设置中删除你不需要的中间件。

答案 1 :(得分:0)

你只需要

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

(假设您在settings.py中设置了数据库和installed_apps内容)

答案 2 :(得分:0)

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

  1. 您可以设置django项目

  2. 为您的目的创建一个应用,包含在settings.py中,并在models.py中的应用内部创建所需的模型。 参考:What minimal files i need to use django ORM

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

  4. 您可以在芹菜任务中导入和使用正常的django模型。

  5. 您可以使用

    运行芹菜任务

    我。芹菜 - 任务工作者--loglevel = info

    II。芹菜 - 任务击败-l info。如果您想要为定期执行而编写的任务,请使用beats。

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

  7. 我认为这可以帮助您解决问题。