Python word

2020-12-11 16:01:52 +08:00
 shimingzhoudf

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

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

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

https://python-rq.org/
wuwukai007
2020-12-11 18:32:01 +08:00
celery 还要配 redis,用 huey,内存可以做队列
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
2020-12-15 11:00:55 +08:00
@l4ever 入库处理的话,这个时候前端显示上传成功,如果说用户传完就要查看这些处理好的 word,而后端还在库里处理,这就表现出我上传成功却看不到数据,或者有其他的解决方案?表现形式...
l4ever
2020-12-17 09:29:23 +08:00
@encro 人家要解决方案, 你给出了标准的否决方案.
encro
2020-12-18 10:46:49 +08:00
@l4ever

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

而对方说的关键点标题是“python word”,所以我理解是他期望提高 python 处理 word 的时间,那么答案是不好处理,当然用 spire,aspose 可以快一点,但是格式不一定正确,付费也不便宜吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/734552

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX