将Excel文件作为后台任务上传到芹菜? -Celery Redis Python Django

问题描述 投票:0回答:1
upload_subscribers.delay参数的

问题只能是整数或字符串,我将无法将requestyour_file作为参数传递给函数。如何修复以下代码,使其可以在celery中作为后台任务运行?

import pandas as pd
from .models import Subscriber

def upload_subscribers(request):
    template = "audiences/upload.html"
    if request.method == "POST":
        your_file = request.FILES['file']

        if your_file.name.endswith('.xlsx'):
            df = pd.read_excel(your_file)

            for index, row in df.iterrows():
                created = Subscriber.objects.update_or_create(
                    email= row[2],
                    defaults = {
                        "first_name": row[0],
                        "last_name": row[1],
                    })

    return None
django redis celery django-celery
1个回答
0
投票

有两种方法可以解决此问题,

  • 将文件的全部数据作为函数参数发送
  • 将文件保存在磁盘,S3,数据库等某些存储系统中,将此文件位置发送到celery任务。
data = ""
with open(your_file, "rb") as f:
    data = f.read()
upload_subscribers.delay( data )

© www.soinside.com 2019 - 2024. All rights reserved.