当前位置: 首页 > 面试题库 >

正在运行flask + gevent +请求未“同时”投放

夹谷英杰
2023-03-14
问题内容

我像这样启动我的烧瓶应用程序:

#!flask/bin/python
from app import app_instance
from gevent.pywsgi import WSGIServer

#returns and instance of the application - using function to wrap configuration
app = app_instance()
http_server = WSGIServer(('',5000), app)
http_server.serve_forever()

然后,当我尝试执行此代码时,请求调用将阻塞,直到原始请求超时为止。我基本上是在同一烧瓶应用程序中调用Web服务。我对gevent有什么误解?发生I / O事件时线程不会屈服吗?

@webapp.route("/register", methods=['GET', 'POST'])
def register():
    form = RegistrationForm(request.form, csrf_enabled=False)
    data = None
    if request.method == 'POST' and form.validate():
        data= {'email': form.email, 'auth_token': form.password,
                'name' : form.name, 'auth_provider' : 'APP'}
        r = requests.post('http://localhost:5000', params=data)
        print('status' + str(r.status_code))
        print(r.json())
    return render_template('register.html', form=form)

问题答案:

我相信这个问题很可能你忘记了monkey patch。这样一来,所有正常阻塞的呼叫都将变为利用greenlet的非阻塞呼叫。为此,只需在调用其他代码之前放置此代码即可。

from gevent import monkey; monkey.patch_all()


 类似资料:
  • 问题内容: 究竟是通过对吗? 我的应用程序处理了来自用户的输入,并且花了一些时间。在这段时间内,应用程序无法处理其他请求。我已经测试了我的应用程序,它可以让我同时处理多个请求。 问题答案: 从Flask 1.0开始,Flask随附的WSGI服务器默认在线程模式下运行。 在1.0之前的版本中,或者如果你禁用线程,则服务器以单线程模式运行,并且一次只能处理一个请求。任何并行请求都必须等待,直到可以处理

  • 问题内容: 我同时运行两个AJAX请求时遇到问题。我有一个PHP脚本正在将数据导出到XSLX。此操作需要很多时间,因此我尝试向用户显示进度。我正在使用AJAX和数据库方法。实际上,我非常确定它曾经可以工作,但是我不知道为什么,它不再在任何浏览器中都能工作。新浏览器有什么变化吗? 在数据库中正确更新进度 JS计时器正在尝试获取进度,我可以在控制台中看到它,但是所有这些请求都加载第一个脚本的整个持续时

  • 首先,我知道这是一个重复的问题,但我已经看过了其他类似问题的答案,没有找到成功的解决方案。 我已经开发了一款应用程序,可以在我的测试设备上完美运行,这是一款运行Android L(5.0.1)的三星S4。不过,我希望这款应用程序也能在较新版本的Android上运行。 我知道Android M的请求权限已更改,因此必须在运行时请求权限,但当我尝试实现此功能时,对话框从未出现,因此从未请求所需的权限。

  • 问题内容: 我正在尝试围绕我的烧瓶应用程序为办公室中的菜鸟创建一个简单的tkinter GUI窗口。我希望脚本按以下顺序执行这些任务: 启动Flask Web服务器 用一个按钮打开一个tkinter GUI窗口。当按下时,该按钮将打开应用程序的索引页面(例如http://127.0.0.1:5000) 关闭tkinter gui窗口时终止flask Web服务器 到目前为止,这是我所拥有的,但是该

  • 问题内容: 我有一个名为的HTML文件: 另一个JavaScript文件放置在同一目录的文件夹中。 加载HTML文件时,此代码工作正常,但是当我在服务器中运行该代码时,此代码不起作用。 我使用Python的Flask框架进行后端编程,有趣的是,如果我在HTML文件中扩展JavaScript代码,则同样的东西也可以很好地工作。唯一的问题是外部文件。 问题答案: 将文件用作静态资源: 将文件移动到包的