【问题标题】:Is it possible to use Django models module only in my project?是否可以仅在我的项目中使用 Django 模型模块?
【发布时间】:2017-01-07 09:45:49
【问题描述】:

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

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

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

有可能做到这一点吗?如果有,怎么做?

这是我的项目结构:

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

这是我的 settings.py:

【问题讨论】:

    标签: python django django-models celery


    【解决方案1】:

    您有一个需要一些 celery 任务的 python 脚本,并且您还需要 Django ORM 来进行数据库交互。

    1. 您可以设置 django 项目

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

    3. 设置执行 celery 的环境。即redis服务器。将“djcelery”与 django 项目集成。用于芹菜任务目的。 您可以将 celery beat 用于周期性任务。或延迟。 参考:http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html

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

    5. 你可以使用 celery 任务来运行

      我。 celery -A 任务工作者 --loglevel=info

      二。芹菜 -A 任务节拍 -l 信息。如果您想要为定期执行而编写的任务,请使用节拍。

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

    我认为这将帮助您解决问题。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        你只需要

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

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

        【讨论】:

        • 你能再解释一下吗,我不明白。我需要在哪里使用它?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-14
        • 2017-12-30
        • 1970-01-01
        • 2018-09-14
        • 2022-09-28
        相关资源
        最近更新 更多