zwxi 10 months ago
parent
commit
fae8d1781a
1 changed files with 47 additions and 33 deletions
  1. 47 33
      services/smart_report.go

+ 47 - 33
services/smart_report.go

@@ -135,37 +135,45 @@ func ReportToPdf(reportUrl, filePath string) (err error) {
 import asyncio
 from pyppeteer import launch
 
-async def main():
-
-    browser = await launch({
+@asyncio.coroutine
+def main():
+    # 异步代码
+    browser = yield from launch({
         'executablePath': '%s',
         'headless': True,
-        'args':['--disable-infobars', '--no-sandbox']
+        'args': ['--disable-infobars', '--no-sandbox']
     })
-    page = await browser.newPage()
-    await page.setViewport({
+    page = yield from browser.newPage()
+    yield from page.setViewport({
         'width': 1920,
         'height': 1080,
     })
-    # await page.setDefaultNavigationTimeout(0)
-    await page.goto('http://testetareport.hzinsights.com/reportshare_pdf?code=56517f19aa289885c43e8db9137fb1b0&viewType=!pdf!',{
-        'waitUntil':'networkidle0'
+    yield from page.goto('%s', {
+        'waitUntil': 'networkidle0',
+        'timeout': 1000000  # 设置超时时间为 100 秒
     })
-    # Consider handling errors or waiting strategies if necessary
-    await page.pdf({
+    yield from page.pdf({
         'path': "%s",
         'printBackground': True,
         'format': "A2",
         'margin': {
-            'top': 10,
-            'bottom': 10,
-            'left':10,
-            'right':10
+            'top': '10mm',
+            'bottom': '10mm',
+            'left': '10mm',
+            'right': '10mm'
         }
     })
-    await browser.close()
+    yield from browser.close()
+
+# 创建事件循环
+loop = asyncio.get_event_loop()
 
-asyncio.get_event_loop().run_until_complete(main())
+# 使用事件循环运行main函数
+try:
+    loop.run_until_complete(main())
+finally:
+    # 关闭事件循环
+    loop.close()
 `
 
 	pyCode = fmt.Sprintf(pyCode, utils.ChromeDrivePath, reportUrl, filePath)
@@ -183,33 +191,39 @@ func ReportToJpeg(reportUrl, filePath string) (err error) {
 import asyncio
 from pyppeteer import launch
 
-async def main():
-    
-    browser = await launch({
+@asyncio.coroutine
+def main():
+    # 异步代码
+    browser = yield from launch({
         'executablePath': '%s',
-        'headless': True
+        'headless': True,
+        'args': ['--disable-infobars', '--no-sandbox']
     })
-    page = await browser.newPage()
-    await page.setViewport({
+    page = yield from browser.newPage()
+    yield from page.setViewport({
         'width': 1920,
         'height': 1080,
     })
-	# 对于大的PDF生成,可能会时间很久,这里规定不会进行超时处理
-    # await page.setDefaultNavigationTimeout(0)
-	# 不再有网络连接时触发    
-	await page.goto('%s',{
-        'waitUntil':'networkidle0'
+    yield from page.goto('%s', {
+        'waitUntil': 'networkidle0',
+        'timeout': 1000000  # 设置超时时间为 100 秒
     })
-    # Customizing footer for page numbers starting from page 2
-
-    await page.screenshot({
+    yield from page.screenshot({
         'path': "%s",
         'type': "jpeg",
         'fullPage': True,
     })
-    await browser.close()
+    yield from browser.close()
+
+# 创建事件循环
+loop = asyncio.get_event_loop()
 
-asyncio.get_event_loop().run_until_complete(main())
+# 使用事件循环运行main函数
+try:
+    loop.run_until_complete(main())
+finally:
+    # 关闭事件循环
+    loop.close()
 `
 
 	pyCode = fmt.Sprintf(pyCode, utils.ChromeDrivePath, reportUrl, filePath)