• 请不要在回答技术问题时复制粘贴 AI 生成的内容
pureGirl
V2EX  ›  程序员

需要高并发读取 xlsx 文件存入数据库怎么处理比较好

  •  
  •   pureGirl · Jan 27, 2025 via iPhone · 6006 views
    This topic created in 647 days ago, the information mentioned may be changed or developed.
    用 django celery 可以实现吗
    24 replies  •  2025-01-29 22:08:22 +08:00
    wen20
    wen20
    Jan 27, 2025
    1
    有多少 xlsx 要读, 还需要高并发
    pureGirl
    pureGirl
    OP
    Jan 27, 2025
    2
    @wen20 实际不需要多少,但是要处理并发
    neoblackcap
    neoblackcap
    Jan 27, 2025
    3
    不是很懂什么叫高并发读取 xlsx 文件,你一个文件需要很多个人一起读?还是一大批文件需要并行处理?
    只是简单的并行处理,直接进程池就可以解决问题了
    pureGirl
    pureGirl
    OP
    Jan 27, 2025 via iPhone
    4
    @neoblackcap 就是会并发上传 xlsx 文件,然后把内容写入数据库
    jinyan01
    jinyan01
    Jan 27, 2025
    5
    可以实现,celery 是异步的不会阻塞 Django 的 worker 的
    neoblackcap
    neoblackcap
    Jan 27, 2025
    6
    @pureGirl 并发上传文件,那先上传到对象存储,然后创建异步任务,慢慢处理
    pureGirl
    pureGirl
    OP
    Jan 27, 2025 via iPhone
    7
    @neoblackcap 现在就直接把文件转换成二进制存到队列里,然后 worker 一个个处理
    neoblackcap
    neoblackcap
    Jan 27, 2025
    8
    @pureGirl 那这个方案现在是有什么问题吗?数据不大的话,处理得快也不是不行
    alphaControler
    alphaControler
    Jan 27, 2025 via Android
    9
    并发要解决的是数据竞争问题,你这只是读的话,多少并发都没问题。如果是有写,那就看具体情况,要么按时间片分文件,要么读写锁。
    pureGirl
    pureGirl
    OP
    Jan 27, 2025 via iPhone
    10
    @neoblackcap 之后可能会有数据比较大的情况
    rogerer
    rogerer
    Jan 27, 2025
    11
    @pureGirl 那就做优先级队列?把耗时长的任务放后面一点,并行处理 xlsx 也没有太多特殊的操作。
    8355
    8355
    Jan 27, 2025
    12
    不是我说,高并发有 qps50 没。。。。
    thoo61871
    thoo61871
    Jan 27, 2025
    13
    异步
    随便你怎么实现都行
    neoblackcap
    neoblackcap
    Jan 27, 2025
    14
    @pureGirl 那就改成先上传到对象存储,然后你处理的时候再从对象存储读回。反正都落盘了,后续都是慢慢处理的问题的。
    sazima
    sazima
    Jan 27, 2025
    15
    很耗时吗? Dajngo 部署不是单进程的,不需要 celery
    neoblackcap
    neoblackcap
    Jan 27, 2025
    16
    @pureGirl 还有就是对象存储的读取,记得走 VPC/内网,既省钱,又提高性能
    pureGirl
    pureGirl
    OP
    Jan 27, 2025 via iPhone
    17
    @neoblackcap 我研究一下,谢谢
    opengps
    opengps
    Jan 27, 2025❤️1
    18
    单个文件的操作是独占的,并非高并发的概念。你可能高频,但不是并发
    pureGirl
    pureGirl
    OP
    Jan 27, 2025 via iPhone
    19
    @opengps 不是单个文件啊,是多次请求处理文件
    pureGirl
    pureGirl
    OP
    Jan 27, 2025 via iPhone
    20
    @opengps 高频是什么东西没听说过
    windyboy
    windyboy
    Jan 28, 2025
    21
    多个人不可能一起写一个文件
    ponyfk
    ponyfk
    Jan 28, 2025
    22
    --- 用 django celery 可以实现吗

    可以实现。以我的经验,celery 都不需要,就在 view 代码里面处理
    ShineyWang
    ShineyWang
    Jan 29, 2025 via Android
    23
    很多数据库应该直接支持 Excel 导入
    512357301
    512357301
    Jan 29, 2025 via Android
    24
    试试 duckdb
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3506 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 68ms · UTC 05:16 · PVG 13:16 · LAX 21:16 · JFK 00:16
    ♥ Do have faith in what you're doing.