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

我可以单独使用Flask app.run()服务多个客户端吗?

有翰海
2023-03-14
问题内容

我知道我可以将Flask与Apache或其他Web服务器链接。但是,我当时正在考虑将Flask作为独立的服务器运行,同时为多个客户端提供服务。

这可能吗?我是否需要处理产生多个线程并进行管理?


问题答案:

flask.Flask.run接受**options转发给它的其他关键字参数()werkzeug.serving.run_simple-其中两个参数是threaded(布尔值)和processes(你可以将其设置为大于1的数字以使werkzeug产生多个进程来处理请求)。

threaded默认情况下True为Flask 1.0起,因此对于最新版本的Flask,默认情况下默认开发服务器将能够同时为多个客户端提供服务。对于旧版本的Flask,你可以显式传递threaded=True以启用此行为。

例如,你可以

if __name__ == '__main__':
    app.run(threaded=True)

以与旧Flask版本兼容的方式使用线程处理多个客户端,或者

if __name__ == '__main__':
    app.run(threaded=False, processes=3)

告诉Werkzeug产生三个进程来处理传入的请求,或者

if __name__ == '__main__':
    app.run()

如果你知道将使用Flask 1.0或更高版本,则可以使用线程来处理多个客户端。

话虽如此,Werkzeug的serving.run_simple包装了标准库的wsgiref软件包-该软件包包含WSGI的参考实现,而不是可用于生产的Web服务器。如果你要在生产环境中使用Flask(假设“生产环境”不是低流量的内部应用程序,并发用户不超过10个),请确保将其置于真实的Web服务器后面(请参阅Flask文档标题为“ 一些建议方法的部署选项)。



 类似资料:
  • 我尝试使用Java中的Sockets连接到多个客户端。一切似乎都正常,但问题是,服务器只监听第一个客户端。如果有多个客户端,服务器可以向它们发送所有消息,但他可以只监听来自第一个客户端的消息。我尝试了所有这些(我从昨天开始就遇到了这个问题)。所以我很确定,错误一定在“ClientListener”类中。 说明:有一个客户端列表(用于与字符串通信的连接)。在GUI中有一个列表,我可以在其中选择要与哪

  • 问题内容: 我正在使用RMI编写密码系统的原型。 我有一个问题,因为当我启动两个客户端时,它们从OneTimePad类的服务器中的一个对象获得了响应。 因此客户端A获取为客户端b保留的密钥,由于特定的算法,这种情况不会发生。 服务器仅向客户端发送E和N变量(例如在RSA中),因此我无法序列化OneTimePad对象并通过网络发送它(因为它将具有所有密钥)。 如何为每个客户端创建OneTimePad

  • 我试图在我的程序中加载用于过滤的blob名称,然后在应用所有过滤器后,我计划下载并处理每个blob。目前,我们在存储中有大约30kblob,它们存储在容器中,如下所示:年/月/日/小时/file.csv(或file.json未处理的文件) 我的程序需要动态输入下载的开始和结束日期(最长30天)。使用Azure。Blobs.BlobContainerItem和方法GetBlobs允许我使用单个字符串

  • 我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se

  • 我用代理ip列表在我的kafka生产者/消费者/流应用程序中配置。但我想移动到一个url条目,该条目将通过DNS查找当前称为up的代理ip来解析(DNS主动检查集群中的代理并使用IP短TTL[10s]响应查找)。这让我在未来添加代理时具有更大的灵活性,并且我可以在所有环境/阶段的应用程序中保持相同的配置。这是推荐的方法吗,还是这会消除客户端没有严格代理列表的弹性?我假设此配置仅用于最初“发现”集群

  • 当使用.NET瘦客户端时,是否可以启动和提交/回滚Ignite事务?我没有找到开始交易的方法。谢谢你!