web.py 和 Gunicorn

2024-01-15

我的问题基本上是标题中的内容:如何设置gunicorn来运行web.py应用程序? (另外,如果有任何差异,我将如何在heroku上做到这一点?)

我已经使用内置的cherrypy在heroku上运行了我的应用程序,但我无法让gunicorn与web.py一起使用(我只是不知道从哪里开始 - 我找不到任何教程)。


恐怕我对 Heroku 不熟悉,但我可以回答你的基本问题。

Gunicorn 是一个 HTTP 服务器,用于通过 WSGI 运行 Python Web 应用程序。 web.py 是一个使用 WSGI 创建 Python Web 应用程序的框架。

因此,您实际上并不需要一起使用两者的教程,因为您所需要做的就是弄清楚如何将 web.py 应用程序的 WSGI 入口点传递给gunicorn。 WSGI 应用程序只是一个具有正确接口的 Python 可调用程序,即它接受某些参数并返回某个响应。看这个 WSGI 教程 http://webpython.codepoint.net/wsgi_tutorial了解更多。

web.py 教程中的“hello world”应用程序如下 test.py 所示:

import web

urls = (
    '/', 'index'
)

class index:
    def GET(self):
        return "Hello, world!"

if __name__ == "__main__":
    app = web.application(urls, globals())
    app.run()

但这并没有暴露gunicorn 需要的WSGI 应用程序。

web.py 通过以下方式提供 WSGI 应用程序wsgifunc的方法web.application http://webpy.org/docs/0.3/api#web.application。我们可以通过在后面添加以下内容来将其添加到 test.pyindex class:

# For serving using any wsgi server
wsgi_app = web.application(urls, globals()).wsgifunc()

这基本上就是 web.py 文档告诉您在使用时在部署部分中执行的操作Apache + mod_wsgi http://webpy.org/cookbook/mod_wsgi-apache- 事实上,Gunicorn 的 Python 代码与我们相同并不是巧合,因为这正是 WSGI 为您提供的 - 一种编写 Python 的标准方法,以便可以使用任何支持 WSGI 的服务器来部署它。

正如中所解释的Gunicorn 文档 http://docs.gunicorn.org/en/latest/run.html#gunicorn,然后我们可以将gunicorn指向wsgi_app的成员test模块如下:

(tmp)day@office:~/tmp$ gunicorn test:wsgi_app
2012-12-03 23:31:11 [19265] [INFO] Starting gunicorn 0.16.1
2012-12-03 23:31:11 [19265] [INFO] Listening at: http://127.0.0.1:8000 (19265)
2012-12-03 23:31:11 [19265] [INFO] Using worker: sync
2012-12-03 23:31:11 [19268] [INFO] Booting worker with pid: 19268
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

web.py 和 Gunicorn 的相关文章

  • Python包不安装子模块

    我在 dev 分支中创建了一个具有以下结构的包 在验证包安装正确之前不会合并到 main mypackage init py setup py requirements txt module py subpackage one init p
  • python中热图的层次聚类

    我有一个 NxM 矩阵 其值范围为 0 到 20 我可以使用 Matplotlib 和 pcolor 轻松获得热图 现在我想使用 scipy 应用层次聚类和树状图 我想重新排序每个维度 行和列 以显示哪些元素相似 根据聚类结果 如果矩阵是方
  • 美丽的汤从谷歌搜索中提取href

    谷歌搜索给出了以下 HTML 的第一个结果 h3 class r a href https rads stackoverflow com amzn click com 0470284889 class l vst em Quantitati
  • 静态文件配置不正确

    我已经在 Heroku 上部署了简单的博客应用程序 它运行在Django 1 8 4 我在静态文件方面遇到了一些问题 当打开我的应用程序时 我看到Application Error页面 所以我尝试调试它并发现当我提交到 Heroku 时它无
  • 在 Python 3 中动态导入模块的问题

    我遇到的情况是 在我的 Python 3 项目中 在运行时必须包含某些模块 我在用着importlib import module为了这 第二次更新 我确实找到了一种方法来做一些接近我想要的事情 一些额外的代码可能会使我的一些链接稍微偏离一
  • Python 使用 M2Crypto 通过 S/MIME 对消息进行签名

    我现在花了几个小时 但找不到我的错误 我想要一个简单的例程来创建 S MIME 签名消息 稍后可以与 smtplib 一起使用 这是我到目前为止所拥有的 usr bin python2 7 coding utf 8 from future
  • 绘制“plot”而不是“scatter”时,图例选择会中断

    再会 这个问题是后续问题为什么图例选取仅适用于 ax twinx 而不适用于 ax https stackoverflow com q 60167378 9282844 下面提供的最小代码分别绘制了两条曲线ax1 and ax2 ax1 t
  • Pyinstaller --onefile 警告文件已存在但不应存在

    跑步时Pyinstaller onefile 并开始得到结果 exe 会出现多个弹出窗口 并显示以下警告 WARNING file already exists but should not C Users myuser AppData L
  • Selenium:等到 WebElement 中的文本发生变化

    我在用着selenium使用Python 2 7 从网页上的搜索框检索内容 搜索框动态检索结果并在框本身中显示结果 from selenium import webdriver from selenium webdriver common
  • 如何使用python读取最后一行的特定位置

    我有一个太大的 txt 文件 并且有几行类似的行 如下所示 字1 字2 字3 字4 553 75 我对位置 4 值 感兴趣 即最后一行 553 75 我的文件文本 word1 word2 word3 word4 553 20 word1 w
  • 管理文件字段当前 url 不正确

    在 Django 管理中 只要有 FileField 编辑页面上就会有一个 当前 框 其中包含指向当前文件的超链接 但是 此链接会附加到当前页面 url 因此会导致 404 因为不存在这样的页面 例如 http 127 0 0 1 8000
  • 为 Python 2.4 改进“with”语句的直接替换

    您能否建议一种方法来编写可在 Python 2 4 中使用的 with 语句的直接替换代码 这将是一个 hack 但它可以让我更好地将我的项目移植到 Python 2 4 EDIT 删除了不相关的元类草图 只需使用 try finally
  • 如何在 Python 中执行相当于预处理器指令的操作?

    有没有办法在 Python 中执行以下预处理器指令 if DEBUG lt do some code gt else lt do some other code gt endif There s debug 这是编译器预处理的特殊值 if
  • python中打印字符串的长度

    有没有什么方法可以找到 即使是最好的猜测 Python中字符串的 打印 长度 例如 potaa bto 是 8 个字符len但 tty 上只打印 6 个字符宽 预期用途 s potato x1b 01 32mpotato x1b 0 0mp
  • 请求response.iter_content()获取不完整的文件(1024MB而不是1.5GB)?

    您好 我一直在使用此代码片段从网站下载文件 到目前为止 小于 1GB 的文件都很好 但我注意到 1 5GB 文件不完整 s is requests session object r s get fileUrl headers headers
  • 向量化 numpy bincount

    我有一个 2d numpy 数组 A我要申请np bincount 到矩阵的每一列A生成另一个二维数组B由原始矩阵每列的 bincounts 组成A 我的问题是 np bincount 是一个采用一维数组的函数 它不是像这样的数组方法B A
  • 网页抓取 - 如何识别网页上的主要内容

    给定一个新闻文章网页 来自任何主要新闻来源 例如时报或彭博社 我想识别该页面上的主要文章内容 并丢弃其他杂项元素 例如广告 菜单 侧边栏 用户评论 在大多数主要新闻网站上都可以使用的通用方法是什么 有哪些好的数据挖掘工具或库 最好是基于Py
  • 从 csv 中读取 pandas 数据帧,以非固定标头开始

    我有许多数据文件是由我的实验室中使用的一些相当黑客的脚本生成的 该脚本非常有趣 因为它在标头之前附加的行数因文件而异 尽管它们具有相同的格式并具有相同的标头 我正在编写一个批处理来将所有这些文件处理为数据帧 如果我不知道位置 如何让 pan
  • psutil:测量特定进程的CPU使用率

    我正在尝试测量进程树的 cpu 使用率 目前获取进程 没有子进程 的 cpu usage 就可以了 但我得到了奇怪的结果 import psutil p psutil Process PID p cpu percent 还给我float g
  • 在读/写二进制数据结构时访问位域

    我正在为二进制格式编写一个解析器 这种二进制格式涉及不同的表 这些表同样采用二进制格式 通常包含不同的字段大小 其中 50 100 个之间 大多数这些结构都有位域 并且在 C 语言中表示时看起来像这样 struct myHeader uns

随机推荐

  • 使用 C# 读取附加到 HTTP 扩展的 BLOB

    所以我使用第三方服务来编辑我的XML存储在服务器路径上的文件 现在 一旦我完成编辑XML 我将文件保存到本地内存存储 该存储生成附加到 URL 的 BLOB Example blob http localhost 0e06af7a a1a9
  • C++ 中“使用命名空间 ::X”中的前导 :: 是什么意思

    有人可以解释一下以下命名空间用法之间的区别 using namespace layer module and using namespace layer module 是什么原因导致额外的 before layer 如果在以下上下文中使用它
  • 如何将 WordPress 模板与 CodeIgniter 集成

    CodeIgniter 和 WordPress 如何集成 使得外观和感觉 模板 WordPress 博客是否会转移到 CodeIgniter 创建的页面 第一步是将 CodeIgniter 和 WordPress 文件移动到它们自己的目录中
  • fclose() 函数运行缓慢

    我尝试在 Linux 机器上使用 c fopen fwrite 和 fflush 和 fclose 函数创建大约 4 GB 的文件 但我观察到 fclose 函数需要很长时间才能关闭文件 大约需要 40 50 秒 我检查了不同的论坛以找到这
  • Sqlite3 的 Rails 测试失败

    当我在 Rails 中运行测试时 我似乎遇到了一个奇怪的错误 它们都因相同的原因而失败 并且没有一个在线文档对于这个特定的错误似乎特别有帮助 SQLite3 SQLException cannot rollback no transacti
  • 从 Kafka 获取最新值

    我有一个卡夫卡主题叫做A 主题中的数据格式A is id 1 name stackoverflow created at 2017 09 28 22 30 00 000 id 2 name confluent created at 2017
  • Control-C 和 C 中的信号处理

    我有 2 个进程通过套接字相互通信发送者和接收者 我想捕获信号 Control C 并且不退出 显示一些输出 发送者和接收者工作正常 所以我将信号 SIGINT 处理程序 添加到发送者的身体 handler 只是输出一些文本 所以当我运行它
  • Rails:没有复数的路由给出了奇怪的助手

    通过此设置 我得到了一个奇怪的命名助手 在 config routes rb 中我有 Qtl Application routes draw do resources qtl table do collection do get searc
  • 使用 Visual Studio 的 link.exe 的链接文件限制是多少?

    我知道一些链接器对命令行上允许的目标文件数量有限制 Visual Studio 是什么 此外 如果超过此数字 某些链接器允许您指定一个包含所有目标文件名称的文件 并且您只能将其作为参数传递 这是一个例子来向您展示我的意思 some link
  • 全文搜索仅返回精确匹配

    我有以下脚本 select c id from TBL COUPONS as c inner join TBL BUSINESS as b on c business id b business id inner join TBL BLOC
  • Android:API级别VS。安卓版本

    我是Android开发新手 我想知道版本和API级别之间有什么联系或区别 每一项指的是什么 当我决定为 API 14 或 Android 4 0 开发一些应用程序时 这意味着什么 或者一个是另一个的子集 我根本没明白其中的区别 为什么有两个
  • Android - EditText 与软键盘重叠

    我正在开发一个有一些 EditText 的 Activity 当我单击 触摸 EditText 时 会出现软键盘 但是屏幕底部的 EditText 与软键盘重叠 显示 EditText 的上半部分 下半部分位于键盘下方 我设置了androi
  • Julia Dataframes 与 Python pandas

    我目前正在使用 pythonpandas并想知道是否有办法将 pandas 中的数据输出到 Julia 中Dataframes反之亦然 我认为你可以从 Julia 调用 pythonPycall但我不确定它是否适用于数据帧 有没有办法从 p
  • javascript 获取子域上的 iframe url 当前页面

    我需要获取页面上 iframe 所在的页面 url 因为我们使用 iframe 来处理订购产品 然而 在我的一生中 我似乎无法让它显示 iframe 的 URL 显示是一个测试 因为当我看到它有效时它会自动发送电子邮件 代码
  • Magento:获取商店联系电话

    看起来应该很简单 但在任何地方都找不到解决方案 我需要输出商店联系电话号码 该号码位于管理员的商店信息中 我需要将其输出到模板文件和 CMS 页面中 每个文件的代码是什么 谢谢 那是一个核心配置 所以它被保存在core config dat
  • 多数据库 Grails 应用程序的 Spring 或 Hibernate 多租户

    Grails 有一个用于单个数据库的多租户插件和一个用于多数据库的多租户插件 但不再支持 维护用于多数据库的插件 有没有什么方法可以让我将 Spring 或 Hibernate 本身用于多租户多数据库 Grails 应用程序 您可以使用此处
  • 如何从 JavaScript 中隐藏时间标准

    我只想显示天 日期 时间 现在显示 其实我想显示如下 如何删除 印度标准时间 使用的代码如下
  • Vue:等待渲染,直到安装所有组件

    我有一个 Vue Nuxt Web 应用程序 其中页面是从许多具有子组件的组件动态生成的 问题是页眉和页脚首先渲染 然后是具有实际内容的子组件 第一次加载时这看起来很糟糕 而且 Lighthouse 不喜欢它 这是一个Avoid large
  • 使用自动布局将堆栈视图垂直定向为纵向,水平定向为横向

    获得纵向垂直堆栈视图以横向水平对齐的最佳方法是什么 我尝试过代码和自动布局解决方案 但它们不起作用 有没有简单的方法可以在故事板中做到这一点 您需要以编程方式更新axis的财产UIStackView https developer appl
  • web.py 和 Gunicorn

    我的问题基本上是标题中的内容 如何设置gunicorn来运行web py应用程序 另外 如果有任何差异 我将如何在heroku上做到这一点 我已经使用内置的cherrypy在heroku上运行了我的应用程序 但我无法让gunicorn与we