每当django视图中存在耗时的逻辑时,我都会使用celery将其作为后台任务运行,并返回响应。
from my_app.task import long_task
import json
def my_view(request):
body = request.body
body = json.loads(body)
key = body['key']
long_task.delay(key) # This will run in background
return JsonResponse({'message': 'request submitted'})
是否有任何方法可以实现这种行为,而无需像芹菜等任何后台任务队列来调用long_task方法,因此我可以快速向用户发送响应?
我想将会有使用操作系统和python功能的方法。
答案 0 :(得分:1)
如果您使用的是Python> = 3.5,则可以尝试使用asyncio来运行后台任务:
_+_
可以找到更多信息https://rubygems.org/gems/jsql
如果您想在较低版本的Python(例如2.7)上使用asyncio,则应该能够做到这一点,但请记住,标准核心库中未包含它,您需要安装它。
答案 1 :(得分:0)
好吧,您可以直接在视图处理程序中直接调用一个函数。
如果这是Celery
任务,则可以致电apply
:
long_task.apply(args=[key])