Bottle 服务器在计算时没有响应

问题描述 投票:0回答:1

我有一个在端口 8080 上运行的 bottle 服务器,使用“gevent”服务器。我使用这个服务器来支持一些简单的“服务器发送的事件”。

我的问题可能与不知道我的设置是如何工作有关。我希望有人能花时间详细说明这一点。

来自服务器的所有路由和文件服务都运行良好,但我在访问特定路由“/get_data”时遇到问题。这从网络以及一些内部数据源收集数据。聚会大约需要 30 分钟。在此进程运行时,我无法访问服务器上的任何路由,即“/”或“/login”。该过程完成后,一切都会恢复正常,并且会使用收集到的信息更新数据库。

我尝试用一个简单的 time.sleep(60) 替换收集算法,当计时器处于活动状态时,我仍然能够很好地访问其他路由。

这引出了我的两个问题:

  1. 为什么我在这个进程运行时无法访问服务器。是被阻塞的端口(无法读取网络信息),还是与线程有关?
  2. 在我的服务器上运行高要求/长进程的最佳方式是什么?最好我想从我的网络应用程序访问它,但我考虑过将它放在一个单独的 python 文件中并在服务器上的一个单独的 python 实例中本地运行。这个过程每天最多运行一次,可能每周运行一次。
python bottle gevent
1个回答
3
投票

发生这种情况是因为 WSGI 同步处理请求/响应。
您可以使用 gunicorn 来运行您的应用程序,它将处理多个请求和响应,或者您可以使用 bottle 网站中描述的其他方法:
异步应用程序入门

© www.soinside.com 2019 - 2024. All rights reserved.