【问题标题】:Using Django ORM in plain python script / infinite task在纯 python 脚本/无限任务中使用 Django ORM
【发布时间】:2021-05-16 08:18:13
【问题描述】:

我有一些普通的python 应用程序和一些基本的库。我希望使用 Django 作为该应用程序的主要框架并维护前端。

我的问题是,我是否仍然可以使用我已经编写的应用程序并切换到 Django ORM 并可能通过一些回调来控制应用程序。此应用程序使用 asincio 库无限运行。

或者有什么方法可以在 Django 中运行后台任务?我找到了 celery,但我不确定是否要开始这个过程。也许使用一些 Django 命令和主管。

TLDR:我需要某种方式在无需用户交互的情况下无限长时间运行后台任务(命令、控制器、python 脚本)。

【问题讨论】:

    标签: python django celery


    【解决方案1】:

    您可以使用 Django 后台任务来做到这一点。

    使用装饰器@background 将您的后台任务定义为一个函数。
    由于您希望您的任务无限运行,请在您的主 urls.py 中调用它并设置
    repeat_until = None,然后它将无限重复。

    从链接教程中复制的示例:

    from django.shortcuts import render,HttpResponse
    from background_task import background
    # Create your views here.
    @background(schedule=5)
    def hello():
        print "Hello World!"
    
    def background_view(request):
        hello(repeat=10)
      return HttpResponse("Hello world !")
    

    这是你在 urls.py 中的调用:

    from django.conf.urls import url
    from django.contrib import admin
    from django.conf.urls import include
    from background_app.views import hello
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url( r'^', include('background_app.urls',namespace='background')),
    
    ]
    
    hello(repeat=10,repeat_until=None) # This is how you call it
    

    文档:
    https://django-background-tasks.readthedocs.io/en/latest/


    小例子教程:
    https://medium.com/@robinttt333/running-background-tasks-in-django-f4c1d3f6f06e

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 2019-12-07
      • 2017-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-09
      相关资源
      最近更新 更多