我有一个基于 python 的 SSRS 报告生成实用程序,用于生成多个报告(通常超过 100 个)。它的设置方式是——
- 使用 threading.Thread 调用多个线程,每个线程都有一个字典。
- 每个线程解析字典并调用 rs.exe 通过 python 的 subprocess.call 传入相关参数
生成报告时需要注意以下事项 -
- 如果有大约 20-30 份报告,则一切正常,没有太多问题。
- 如果报告的数量超过 40-50+(到目前为止我不知道的原因),一些报告不会被渲染并返回错误,如 subprocess.call 非零状态(来自 subprocess 的错误消息.call 没有指向任何真正的错误)。但是这些 rs.exe 命令没有错误,因为当我从 Windows 命令提示符运行它们时它们会被渲染。
- 此外,当我尝试重新运行所有那些失败的报告时,它们会被渲染。命令或数据在重新运行时没有变化。
为了解决这个问题,我对 2 次迭代采用了重试逻辑,这似乎有时可以解决问题。但是,当报告超过 100/150+ 时,即使重试也不起作用。现在我可以扩展重试逻辑以继续重试,直到呈现所有报告并且发生的任何故障都是真正的故障(如 RDL 未找到、损坏等)。但在我做任何此类事情之前,想知道是否有任何限制可以同时启动多少个 rs.exe,或者在多线程上下文中调用 python 的 subproces.call 是否有任何限制。
如果有人遇到过此类问题并解决了,可以分享他们的专业知识吗?
谢谢。