V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
shimingzhoudf
V2EX  ›  Python

Python word

  •  
  •   shimingzhoudf · 2020-12-11 16:01:52 +08:00 · 2303 次点击
    这是一个创建于 1234 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求:web 端上传 word,需后台转为 pdf,过程很慢

    一两个 word 需要 3-4s 返回上传成功,如果有 10 多个 word 上传会导致返回很慢

    11 条回复    2020-12-18 10:46:49 +08:00
    maocat
        1
    maocat  
       2020-12-11 16:08:10 +08:00   ❤️ 1
    上 celery, 一个线程处理一个 word
    RRRoger
        2
    RRRoger  
       2020-12-11 16:10:57 +08:00
    上队列吧
    l4ever
        3
    l4ever  
       2020-12-11 16:11:39 +08:00
    先入库, 定时任务消费掉. 不要等返回结果.
    Latin
        4
    Latin  
       2020-12-11 16:16:42 +08:00
    别问问就是异步 另外用的应该是 libreoffice 吧 跟 py 没啥关系 优化逻辑处理就好了
    Jackeriss
        5
    Jackeriss  
       2020-12-11 16:48:10 +08:00 via iPhone
    搞个 redis 的 zset 也可以呀
    echowuhao
        6
    echowuhao  
       2020-12-11 16:55:28 +08:00
    嫌 celery 太重的话,可以用 RQ

    https://python-rq.org/
    wuwukai007
        7
    wuwukai007  
       2020-12-11 18:32:01 +08:00
    celery 还要配 redis,用 huey,内存可以做队列
    encro
        8
    encro  
       2020-12-12 14:03:31 +08:00
    你可以试试打开 word,也要几秒钟。
    word doc 就是一个不开放的格式( docx 的话好一点)。
    几秒钟正常的。
    word 是单机程序,com 组件不提供服务端支持。

    https://support.microsoft.com/zh-cn/help/257757/considerations-for-server-side-automation-of-office

    服务器端安全性:Office 应用程序从不适合在服务器端使用。 因此,Office 应用程序不会考虑分布式组件面临的安全问题。Office 不会对传入的请求进行身份验证。Office 也不会防止你无意中启动另一台可能会运行宏的服务器或从服务器端代码中运行宏。 不要打开从匿名网站上载到服务器上的文件。 基于上一次设置的安全性设置,服务器可能会在具有全部特权的 Administrator 或 System 上下文下运行宏,并危及你的网络的安全。 另外,Office 使用很多客户端组件(例如,Simple MAPI 、WinInet 、MSDAIPP ),它们会缓存客户端身份验证信息以加快处理速度。 如果在服务器端自动化 Office,一个实例的作用可能超过一个客户端。 如果为该会话缓存了身份验证信息,一个客户端可以使用另一个客户端的缓存凭据。 因此,客户端可以通过模仿另一个用户获取非授权的访问权限。
    shimingzhoudf
        9
    shimingzhoudf  
    OP
       2020-12-15 11:00:55 +08:00
    @l4ever 入库处理的话,这个时候前端显示上传成功,如果说用户传完就要查看这些处理好的 word,而后端还在库里处理,这就表现出我上传成功却看不到数据,或者有其他的解决方案?表现形式...
    l4ever
        10
    l4ever  
       2020-12-17 09:29:23 +08:00
    @encro 人家要解决方案, 你给出了标准的否决方案.
    encro
        11
    encro  
       2020-12-18 10:46:49 +08:00
    @l4ever

    异步处理其他人说了,所以不再补充

    而对方说的关键点标题是“python word”,所以我理解是他期望提高 python 处理 word 的时间,那么答案是不好处理,当然用 spire,aspose 可以快一点,但是格式不一定正确,付费也不便宜吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3010 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:26 · PVG 22:26 · LAX 07:26 · JFK 10:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.