我有表单,会上传文件,然后处理文件。由于处理文件需要很长时间,我使用芹菜。 我也用信号来触发任务。
views.py
def load_data(request):
"""Handling load data."""
if request.method == 'POST':
form = DataLoaderForm(request.POST, files=request.FILES,
user=request.user)
if form.is_valid():
data_loader = form.save(True)
data_loader.save()
signals.data_uploaded_signal.send(
sender=load_data, instance=data_loader
)
signals.py
data_uploaded_signal = Signal()
@receiver(data_uploaded_signal)
def apply_data_loader(sender, instance, **kwargs):
load_data.(instance)
tasks.py
from __future__ import absolute_import
from celery import shared_task
@shared_task(name='load_data')
def load_data(data_loader):
run_process()
进程正在运行,但它只是像往常一样运行(不是异步)并阻止请求。
我知道为什么会这样吗?
我尝试过task.delay,但仍然没有运气。我也试图在没有信号的情况下调用任务,也没有运气。
感谢。
更新: 请参阅下面的评论以解决问题。
答案 0 :(得分:0)
值得一提的是,当Celery设置model
设置为True时,它将防止任务异步执行。但是,它对于本地调试和测试非常有用。