标签: pypputeer

视图中的Django asyncio调用不起作用

我现在正在努力解决这个问题.我正在尝试使用pyppeteer以pdf格式导出视图.这是我的功能:

  async def export_pdf(url):                                                                             
      browser = await launch()                                                                           
      page = await browser.newPage() 
      await page.goto(url) 
      pdf = await page.pdf(                                                                              
          {   
              'printBackground': True                                                                    
          }   
      )       
      await browser.close()

      return pdf
Run Code Online (Sandbox Code Playgroud)

在我的观点中称之为:

   response.content = asyncio.get_event_loop().run_until_complete(
      export_pdf(self.request.get_full_path())
  )
Run Code Online (Sandbox Code Playgroud)

但我得到了这个错误

/ export-pdf/1/2018/1/1的RuntimeError /线程'Thread-1'中没有当前事件循环.

经过一些研究,我认为有人解决了我的问题,我就这样称呼它(不太明白,但它是关于django和我的函数没有在主线程中调用的):

  loop = asyncio.new_event_loop()
  asyncio.set_event_loop(loop)
  response.content = loop.run_until_complete(
      export_pdf(
          asyncio.wait(
              export_pdf(self.request.get_full_path())
          )
      )
  )
  loop.close()
Run Code Online (Sandbox Code Playgroud)

但现在我有这个错误:

/ export-pdf/1/2018/1/1 /上的TypeError期望一个期货清单,而不是协程

我对python中的async很新,事实上,当我在ipython shell中复制并粘贴完全相同的代码时,一切正常.

任何解释/光将不胜感激!

提前致谢.

编辑: 经过一些研究,我设法得到另一个错误,这是

信号仅在主线程中有效

奇怪的是,错误来自/usr/lib/python3.6/signal.py甚至来自我的virtualenv.

python django python-3.x python-asyncio pypputeer

5
推荐指数
1
解决办法
1077
查看次数

在树莓派上运行 puppeteer 时出现 OSError

我试图让我的 RP 成为一些网络自动化任务的服务器,所以我安装了python 3.7pypputeer Googlel 的 puppeteer 的 Python 版本)。问题是,在 OSX 上顺利运行的代码在 PI 上出现以下错误:

    Traceback (most recent call last):
  File "main.py", line 45, in <module>
    asyncio.get_event_loop().run_until_complete(main())
  File "/usr/local/lib/python3.7/asyncio/base_events.py", line 568, in run_until_complete
    return future.result()
  File "main.py", line 16, in main
    browser = await launch(headless=True)
  File "/usr/local/lib/python3.7/site-packages/pyppeteer/launcher.py", line 311, in launch
    return await Launcher(options, **kwargs).launch()
  File "/usr/local/lib/python3.7/site-packages/pyppeteer/launcher.py", line 169, in launch
    **options,
  File "/usr/local/lib/python3.7/subprocess.py", line 756, in __init__
    restore_signals, start_new_session)
  File "/usr/local/lib/python3.7/subprocess.py", line 1499, in _execute_child
    raise child_exception_type(errno_num, …
Run Code Online (Sandbox Code Playgroud)

python raspberry-pi puppeteer pypputeer

4
推荐指数
1
解决办法
1653
查看次数