【问题标题】:Bottle server not responding while calculating计算时瓶子服务器没有响应
【发布时间】:2015-06-30 08:54:56
【问题描述】:

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

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

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

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

这引出了我的两个问题:

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

【问题讨论】:

    标签: python flask bottle gevent ports


    【解决方案1】:

    这是因为 WSGI 同步处理请求/响应。
    您可以使用gunicorn 来运行您的应用程序,它将处理多个请求和响应,或者您可以使用瓶子网站中描述的其他方法:
    Primer to Asynchronous Applications

    【讨论】:

    • 我不完全确定这是如何应用的。我正在使用带有 monkey.patch_all() 的 gevent 服务器。正如我所写的,使用 time.sleep() 时一切都很好,所以一定是对的。在我看来,该应用程序可以处理多个请求和响应,但是某些东西导致数据抓取器阻塞了所有内容。我必须为此使用 gevent.queue,还是 gunicorn 是唯一的解决方案?
    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 2019-05-19
    • 2022-12-17
    • 2014-06-04
    • 2011-08-22
    • 2017-01-09
    • 2017-01-04
    • 2018-10-29
    相关资源
    最近更新 更多