Python Django Rest框架:定义端点时指定回调方法?

Python Django Rest框架:定义端点时指定回调方法?,python,django,django-rest-framework,Python,Django,Django Rest Framework,我问自己,在定义DRF端点时,是否有一种定义回调方法的简单方法 例如,假设我要复制此工作流: app1向app2发送数据,调用app2中的DRF端点 app2立即向app1发送HTTP 200/201响应 app2则是一项“繁重”的工作 当然,我知道还有更干净的选择: 我知道沉重的工作负担应该生活在芹菜或Django海峡 我知道在我的例子中,app2是发出请求的人,而app1发送响应会更有意义 我找到了一些想法,但它与Django本身非常相关,而不是Django Rest框架。使用芹菜完

我问自己,在定义DRF端点时,是否有一种定义回调方法的简单方法

例如,假设我要复制此工作流:

  • app1向app2发送数据,调用app2中的DRF端点
  • app2立即向app1发送HTTP 200/201响应
  • app2则是一项“繁重”的工作
当然,我知道还有更干净的选择:

  • 我知道沉重的工作负担应该生活在芹菜或Django海峡
  • 我知道在我的例子中,app2是发出请求的人,而app1发送响应会更有意义

我找到了一些想法,但它与Django本身非常相关,而不是Django Rest框架。

使用芹菜完成异步任务。无论如何,您可以在Django视图中启动线程并运行异步函数:

import logging
import threading
from time import sleep
from django.shortcuts import render

def print_async():
    for i in range(10):
        print(i, '...')
        sleep(1)

def your_view(request, template_name="home.html"):
    # ...
    t = threading.Thread(target=print_async)
    t.setDaemon(True)
    t.start()
    # ...
    return render(request, template_name, {})

使用芹菜进行异步任务。无论如何,您可以在Django视图中启动线程并运行异步函数:

import logging
import threading
from time import sleep
from django.shortcuts import render

def print_async():
    for i in range(10):
        print(i, '...')
        sleep(1)

def your_view(request, template_name="home.html"):
    # ...
    t = threading.Thread(target=print_async)
    t.setDaemon(True)
    t.start()
    # ...
    return render(request, template_name, {})

问题是什么?您已经知道异步调用需要芹菜类型的worker。您知道Django通道吗?这里有一个芹菜的替代品:是的,我知道所有这些解决方案。但我的问题的目的不是为了找到一个额外的工具来满足我的需要。我只是想知道如何在没有任何工具的情况下完成它,即使它不优雅。请看一下我提供的链接,我正在寻找一个类似的解决方案,但与DRF相关。问题是什么?您已经知道异步调用需要芹菜类型的worker。您知道Django通道吗?这里有一个芹菜的替代品:是的,我知道所有这些解决方案。但我的问题的目的不是为了找到一个额外的工具来满足我的需要。我只是想知道如何在没有任何工具的情况下完成它,即使它不优雅。请看一看我提供的链接,我正在寻找一个类似的解决方案,但DRF相关。