我在烧瓶里开发了一个网络应用程序。设置很简单。该应用程序正在Gunicorn上运行。所有请求都通过nginx代理。Flask应用程序本身向外部API发出HTTP请求。从flask应用程序到外部API的HTTP请求由前端javascript代码的AJAX调用启动。外部API将JSON格式的数据返回到Flask应用程序,然后返回到前端。在
问题是,当我在开发模式下使用选项multithreaded = True
运行这个应用程序时,我可以看到JSON数据异步返回到服务器,并且可以很快在前端页面上看到结果。在
但是,当我尝试使用nginx和gunicorn在生产模式下运行应用程序时,我看到JSON数据按顺序返回-一个接一个地缓慢退出。似乎由于某种原因,对外部API的HTTP请求被阻塞了。在
我在linux UbuntuServer16.04上使用supervisor。这就是我如何通过主管启动gunicorn:
command = /path/to/project/env/bin/gunicorn -k gevent --worker-connections 1000 wsgi:app -b localhost:8500
看起来,gunicorn不异步地处理请求,尽管它应该这样做。在
作为实验,我使用wsgi服务器(而不是gunicorn)在开发模式下运行Flask应用程序,debug=True
和{
我读了古尼康的文件。它说如果我需要调用外部API,那么我应该使用异步工作线程。我用过,但没用。在
所有的缓存都被考虑在内了。我可以假设我不使用任何缓存。当我检查服务器设置时,我把它都清除了。在
我错过了什么?我怎样才能让古尼康如期而至?在
谢谢。在
实际上,我很快就解决了这个问题,却忘了马上把答案贴出来。gunicorn服务器没有像我预期的那样及时处理请求的原因非常简单和愚蠢。因为在我将配置更改为:
我忘了跑:
^{pr2}$虽然很简单,但并不明显。我的错误是,我期望配置在gunicorn上重新启动应用程序后自动更新,使用以下命令:
是的,它会重新启动应用程序,但不会重新启动gunicorn的配置。在
相关问题 更多 >
编程相关推荐