cmd markdown怎么导出pdf
展开全部
使用 Python 后端为 Cmd Markdown
做一个导出PDF的功能,一周了才刚搞定,总结下曲折:
1. 在Python服务器端转换PDF,需要开启独立的进程,但是在 Python
Application Server uwsgi 内启动子进程出错。
2. 为了解决问题 1,转而使用异步任务
Celery,让实际的PDF转化工作发生在 Celery 进程,而不是 uwsgi
进程。一来以后可以把这部分耗费资源的工作转移到其它服务器,二来可以配置多个consumer同时工作增强转化速度,三来可以控制此累重任务的请求数,感觉迁移到
Celery 还是有必要。不过使用过程中发现当前的 Celery 版本过旧导致每个任务会新开一个临时队列且不会自动删除,这样针对每个 PDF
转换的请求都会生成一个临时队列,在请求量大的时候可能会导致耗尽内存。
3. 为了解决问题 2,阅读官方文档后,决定升级 Celery
版本,导致大量依赖包升级,RabbitMQ 升级,脚本升级,启动方式需要 sudo 权限。这个 sudo 的权限又导致一些环境变量无法读取,某些 Python
模块加载失败。
4. 为了解决问题 3, 再去读相关文档解决改变配置文件的路径以便 sudo 权限可以读到。终于启动成功后,发现依赖包的升级,我说的
dateutil 这个包,从 1.5 版本升级到 2.2 版本以后居然改变了引用方式,把一个类属性提升至模块级别,导致代码里 类似 import
dateutil dateutil.tz 这种调用全部出错,需要改写成 import
dateutil.tz,而且这个错误是运行时错误,页面上随机点了几个地方才出现。
解决了问题4之后,终于在开发环境下实现了 PDF
导出这个功能。心里暗暗担心其余的依赖包升级是不是会导致其他潜在的运行时错误,心里一阵冷汗。感觉是要去把所有的测试案例的覆盖率再补到百分之百才能放心。
以上,就是为什么一个貌似简单的功能,需要每天工作到半夜两点。
做一个导出PDF的功能,一周了才刚搞定,总结下曲折:
1. 在Python服务器端转换PDF,需要开启独立的进程,但是在 Python
Application Server uwsgi 内启动子进程出错。
2. 为了解决问题 1,转而使用异步任务
Celery,让实际的PDF转化工作发生在 Celery 进程,而不是 uwsgi
进程。一来以后可以把这部分耗费资源的工作转移到其它服务器,二来可以配置多个consumer同时工作增强转化速度,三来可以控制此累重任务的请求数,感觉迁移到
Celery 还是有必要。不过使用过程中发现当前的 Celery 版本过旧导致每个任务会新开一个临时队列且不会自动删除,这样针对每个 PDF
转换的请求都会生成一个临时队列,在请求量大的时候可能会导致耗尽内存。
3. 为了解决问题 2,阅读官方文档后,决定升级 Celery
版本,导致大量依赖包升级,RabbitMQ 升级,脚本升级,启动方式需要 sudo 权限。这个 sudo 的权限又导致一些环境变量无法读取,某些 Python
模块加载失败。
4. 为了解决问题 3, 再去读相关文档解决改变配置文件的路径以便 sudo 权限可以读到。终于启动成功后,发现依赖包的升级,我说的
dateutil 这个包,从 1.5 版本升级到 2.2 版本以后居然改变了引用方式,把一个类属性提升至模块级别,导致代码里 类似 import
dateutil dateutil.tz 这种调用全部出错,需要改写成 import
dateutil.tz,而且这个错误是运行时错误,页面上随机点了几个地方才出现。
解决了问题4之后,终于在开发环境下实现了 PDF
导出这个功能。心里暗暗担心其余的依赖包升级是不是会导致其他潜在的运行时错误,心里一阵冷汗。感觉是要去把所有的测试案例的覆盖率再补到百分之百才能放心。
以上,就是为什么一个貌似简单的功能,需要每天工作到半夜两点。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询