当前位置: 首页 > 知识库问答 >
问题:

GUnicorn继续在烧瓶应用程序上重新启动/打破

毋城
2023-03-14

我有一个烧瓶应用程序,我正试图过渡到通过gunicorn运行。我在这方面遇到了很多问题。以下是我的应用程序的运行代码:

app.run(host=HOST, port=PORT, debug=DEBUG_FLAG)

首先,如果DEBUG_FLAG==true,应用程序将永远不会真正启动,但会继续重新启动,在本地点击它将不起作用。它只是一次又一次地这样做:

gunicorn analytics_service:app                                                                                                                         
 * Running on http://127.0.0.1:5000/
 * Restarting with reloader
 * Running on http://127.0.0.1:5000/
 * Restarting with reloader
 * Running on http://127.0.0.1:5000/
 * Restarting with reloader

如果我用DEBUG_FLAG==False启动它,它实际上会启动并服务于一些请求,但由于未知原因,它仍然会频繁中断并重新启动:

gunicorn analytics_service:app                                                                                                                         (env: BigQueryTest)
 * Running on http://127.0.0.1:5000/
127.0.0.1 - - [28/Aug/2014 08:59:05] "GET /metrics/ctr?location=blah&start_date=2014-05-21&end_date=2014-06-01 HTTP/1.1" 200 -
127.0.0.1 - - [28/Aug/2014 08:59:15] "GET /metrics/ctr?location=blah&start_date=2014-05-21&end_date=2014-06-05 HTTP/1.1" 200 -
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 64693)
Traceback (most recent call last):
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 295, in _handle_request_noblock
    self.process_request(request, client_address)
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 321, in process_request
    self.finish_request(request, client_address)
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 334, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 649, in __init__
    self.handle()
  File "/Users/Eli/.virtualenvs/BigQueryTest/lib/python2.7/site-packages/werkzeug/serving.py", line 200, in handle
    rv = BaseHTTPRequestHandler.handle(self)
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/BaseHTTPServer.py", line 340, in handle
    self.handle_one_request()
  File "/Users/Eli/.virtualenvs/BigQueryTest/lib/python2.7/site-packages/werkzeug/serving.py", line 231, in handle_one_request
    self.raw_requestline = self.rfile.readline()
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 447, in readline
    data = self._sock.recv(self._rbufsize)
  File "/Users/Eli/.virtualenvs/BigQueryTest/lib/python2.7/site-packages/gunicorn/workers/base.py", line 154, in handle_abort
    sys.exit(1)
SystemExit: 1
----------------------------------------
 * Running on http://127.0.0.1:5000/
 * Running on http://127.0.0.1:5000/
 * Running on http://127.0.0.1:5000/
 * Running on http://127.0.0.1:5000/
 * Running on http://127.0.0.1:5000/

如前所述,如果我运行Flask的本机服务器,一切正常。问题只会出现在gunicorn身上。帮助

共有1个答案

宰父浩漫
2023-03-14

我怀疑你的问题是你正在调用应用程序。run()。

应用程序。run()函数启动Flask的开发web服务器。当您使用除Flask之外的web服务器时,您不必调用此函数,您的web服务器(本例中为gunicorn)将有自己的启动方式。

通常,app.run()行位于如果__name__ == '__main__':条件中(参见Flask官方留档示例),因此它仅在您直接执行脚本时运行,如pythonrun.py。我建议您将其添加到run.py脚本中并重新测试。如果有任何剩余的问题,请描述。

 类似资料:
  • 我创建了一个运行docker容器的Azure应用服务。 但是容器似乎一直在重新启动:2020-01-09 07:21:56.543INFO-用于站点xxx的容器xxx初始化成功,并准备好服务请求。2020-01-09 07:22:01.559错误-用于站点xxx的容器不健康,停止站点。2020-01-09 07:22:01.559INFO-停止站点xxx,因为它是不健康的。 由于它是一个资源密集型

  • 问题内容: Flask中是否可以将响应发送给客户端,然后继续进行某些处理?我要完成一些簿记任务,但是我不想让客户等待。 请注意,这些实际上是我想做的非常快的事情,因此在这里实际上不适合创建新线程或使用队列。(这些快速的操作之一实际上是在作业队列中添加一些内容。) 问题答案: 可悲的是,将响应返回给客户端后,拆卸回调不执行: 卷曲时,您会注意到在显示响应之前有2s的延迟,而不是卷曲立即结束,然后在2

  • 我尝试使用Flask制作一个小应用程序,但经常需要重新启动应用程序才能看到结果,这是一种过分的做法。 是否有任何设置可以简单地更新应用程序而不重新启动?(类似于任何像样的PHP或Java/JSP应用程序) [编辑]通过将标志调试设置为True,应用程序的重启可以是手动的或自动的。在这两种情况下,应用程序都会重新启动。我对应用程序的无启动/重新启动感兴趣-不是手动或自动的。 最好的例子是一个PHP页

  • 简单的测试应用程序: 如果它作为独立应用程序运行,则可以完美运行: 但未能从gunicorn开始: 一些注意事项: 如果关闭gevent(猴子补丁和gunicorn工人类),它将非常有效。 我怀疑这是否是初始化和共享数据库池的正确方法。尽管如此,我还是找不到任何其他方法在请求之间共享对象。

  • 我试图将来自一个非常简单的flask应用程序的应用程序日志消息保存在日志文件中。当我使用嵌入式Flask服务器运行应用程序时,这项功能完美无瑕,但在gUnicorn中运行时,它根本不起作用,基本上,运行gUnicorn时,不会将任何应用程序输出重定向到日志文件(我的Flask应用程序中指定的日志文件)或标准输出。 也就是说,这是我的烧瓶应用程序: 现在,如果我以以下方式启动应用程序: 我得到预期的

  • 在过去的几周里,我花了太多的时间试图让它发挥作用。我的目标是使用烧瓶框架创建一个简单的网络应用程序,但我不断收到错误,几个小时的谷歌搜索和搜索stackoverflow也没有帮助。 我正在学习一个教程,该教程要求我运行:$python3 routes.py 只有我才能得到以下错误: 回溯(最近的最后一次调用):文件“routes.py”,第1行,从flask导入flask中,呈现\u模板导入错误: