热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何让Gunskcorn运行Flask应用

如何解决《如何让Gunskcorn运行Flask应用》经验,为你挑选了1个好方法。

我是Flask / Python的新手,这个问题可能很愚蠢,或者我可能缺少明显的东西,所以请耐心等待。

我创建了一个Flask应用,其结构如下:

myproject
  api
    __init__.py
    api.py
    application.py
    config.py
    models.py
  migrations
    ...
  appserver.py
  manage.py
  Procfile
  requirements.txt

我的内容appserver.py

from api.application import create_app

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

我的内容api/application.py

from flask import Flask


def create_app(app_name='MYAPPNAME'):
  app = Flask(app_name)
  app.config.from_object('api.config.DevelopmentConfig')

  from api.api import api
  app.register_blueprint(api, url_prefix='/api')

  from api.models import db
  db.init_app(app)

  return app

当我在本地运行服务器时,python appserver.py一切正常。当我尝试像这样运行gunicorn时:出现gunicorn --bind 127.0.0.1:5000 appserver:create_app此错误:TypeError: create_app() takes from 0 to 1 positional arguments but 2 were given

我在这里做错了什么?



1> Pranav Kunda..:

我建议您更新appserver.py文件内的代码,如下所示:

from api.application import create_app

if __name__ == '__main__':
    create_app = create_app()
    create_app.run()
else:
    gunicorn_app = create_app()

然后如下运行该应用程序 gunicorn --bind 127.0.0.1:5000 appserver:gunicorn_app

执行上述步骤的原因如下:

在本地运行服务器

在本地运行服务器时python appserver.pyif将执行该块。因此,通过您的create_app方法创建了Flask对象,并且您能够访问服务器。

通过Gunicorn运行服务器

通过Gunicorn运行服务器时,需要指定模块名称和应用程序的变量名,以便Gunicorn访问它。请注意,该变量应该是WSGI可调用对象,例如flask应用程序对象。根据Gunicorn Docs中的定义。

运行Gunicorn命令时gunicorn --bind 127.0.0.1:5000 appserver:create_app,它会误create_app认为是WSGI可调用对象(Flask应用程序对象)。这引发了错误,因为create_app只是常规方法,该方法会在正确调用时返回Flask应用程序对象。

因此,我们在else块中添加了创建对象的部分,gunicorn_app = create_app()并通过Gunicorn使用gunicorn --bind 127.0.0.1:5000 appserver:gunicorn_app

您还需要注意的另一件事是,在运行块时会触发python appserver.pyif块,因为它是要执行的主文件。凡当你gunicorn --bind 127.0.0.1:5000 appserver:create_appappserver.py得到由gunicorn进口。因此,该else块被触发。这就是我们放置gunicorn_app = create_app()else块中。

我希望以上解释令人满意。如果您不了解任何部分,请告诉我。


推荐阅读
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • Commit1ced2a7433ea8937a1b260ea65d708f32ca7c95eintroduceda+Clonetraitboundtom ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
author-avatar
偶说撒浪嘿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有