【问题标题】:pyscreenshot.err.FailedBackendError: All backends failedpyscreenshot.err.FailedBackendError:所有后端失败
【发布时间】:2020-10-06 00:28:31
【问题描述】:

我是 python 网络应用程序的新手。

我正在使用 pythonanywhere 来托管我的 web 应用程序。 Pyscreenshot 是通过pip3.8 install --user Pillow pyscreenshot 安装的

我正在使用 ajax 在按钮单击时调用一个函数,该函数使用 pyscreenshot 截取屏幕截图并将其作为图像文件存储在给定路径上。

在本地环境(manjaro、python3.8)上一切正常

但是,当我在 pythonanywhere 上运行相同的代码时,我在网站上遇到了未处理的异常。 在错误日志中,我看到以下内容:

2020-06-16 11:30:09,927: Exception on /takess [GET]
Traceback (most recent call last):
  File "/usr/lib/python3.8/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/lib/python3.8/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/lib/python3.8/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/usr/lib/python3.8/site-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/lib/python3.8/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/Muhammadpen/mysite/flask_app.py", line 12, in takess
    im = ImageGrab.grab()
  File "/home/Muhammadpen/.local/lib/python3.8/site-packages/pyscreenshot/__init__.py", line 31, in grab
    return backend_grab(backend, bbox, childprocess)
  File "/home/Muhammadpen/.local/lib/python3.8/site-packages/pyscreenshot/loader.py", line 147, in backend_grab
    return auto(bbox, childprocess)
  File "/home/Muhammadpen/.local/lib/python3.8/site-packages/pyscreenshot/loader.py", line 127, in auto
    raise FailedBackendError(msg)
pyscreenshot.err.FailedBackendError: All backends failed!

代码如下:

索引.html

<!DOCTYPE html>
<html>
  <head>
    <title>Inspector jitsi</title>
  </head>
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
  <script type=text/javascript>
    $(function() {
      $('a#ssbutton').bind('click', function() {
        $.getJSON('/takess',
            function(data) {
          //do nothing
        });
        return false;
      });
    });
</script>
  <body>
    <iframe
      src="https://meet.jit.si/"
      style="height: 900px; width: 100%;"
    ></iframe>
    <div class='container'>
          <form>
              <a href=# id=ssbutton><button class='btn btn-default'>Take screenshot</button></a>
          </form>

  </div>
  </body>
  <style>
    html,
    body {
      overflow: hidden;
      margin: 0px;
      padding: 0px;
    }
    form{
      position: absolute;
      left: 50%;
      z-index: 0;
    }
  </style>
</html>

app.py:

from flask import Flask, render_template
import pyscreenshot as ImageGrab

app = Flask(__name__)

@app.route('/')
def index():
    return render_template("index.html")

@app.route('/takess')
def takess():
    im = ImageGrab.grab()
    im.save(r'/home/Muhammadpen/mysite/ss1.png')
    # im.save(r'/home/pen/Documents/ss1.png')


if __name__ == "__main__":
    app.run(debug=True)

我找不到任何相关信息或修复,因此我们将不胜感激。泰!

【问题讨论】:

    标签: python flask pythonanywhere


    【解决方案1】:

    PyScreenshot 用于截取桌面应用程序的屏幕截图。由于您的应用程序在服务器上运行,因此无需截屏。

    如果您打算截取用户浏览器的屏幕截图,you would use frontend tooling,它在浏览器中运行,而不是服务器端工具。

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 2020-09-13
      • 2014-06-02
      • 2021-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      相关资源
      最近更新 更多