热门标签 | 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块中。

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


推荐阅读
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
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社区 版权所有