如何调试/记录 wsgi python 应用程序?

2023-11-26

我试过这个:

#!/usr/bin/python    

from wsgiref.simple_server import make_server
from cgi import parse_qs, escape
import logging
import os
import sys

html = """
<html>
<body>
   <form method="post" action="parsing_post.wsgi">
      <p>
         Age: <input type="text" name="age">
         </p>
      <p>
         Hobbies:
         <input name="hobbies" type="checkbox" value="software"> Software
         <input name="hobbies" type="checkbox" value="tunning"> Auto Tunning
         </p>
      <p>
         <input type="submit" value="Submit">
         </p>
      </form>
   <p>
      Age: %s<br>
      Hobbies: %s
      </p>
   </body>
</html>
"""

def application(environ, start_response):

   # the environment variable CONTENT_LENGTH may be empty or missing
   try:
      request_body_size = int(environ.get('CONTENT_LENGTH', 0))
   except (ValueError):
      request_body_size = 0

   # When the method is POST the query string will be sent
   # in the HTTP request body which is passed by the WSGI server
   # in the file like wsgi.input environment variable.
   logger = logging.getLogger(__name__)
   request_body = environ['wsgi.input'].read(request_body_size)
   d = parse_qs(request_body)


   age = d.get('age', [''])[0] # Returns the first age value.
   hobbies = d.get('hobbies', []) # Returns a list of hobbies.

   # Always escape user input to avoid script injection
   age = escape(age)
   hobbies = [escape(hobby) for hobby in hobbies]

   response_body = html % (age or 'Empty',
               ', '.join(hobbies or ['No Hobbies']))

   status = '200 OK'

   response_headers = [('Content-Type', 'text/html'),
                  ('Content-Length', str(len(response_body)))]
   start_response(status, response_headers)

   return [response_body]

但我不知道它记录在哪里。我正在尝试在网页或文件 /var/log/apache2/myapp.log 中显示/记录该值

最好的方法是什么?

任何答案都将受到高度赞赏。


请注意,上面的代码实际上不会产生任何日志,因为您没有调用任何logger.log()变体 - 但我想这不是重点。

如果您使用 apache/mod_wsgi 运行代码,最简单的解决方案是配置您的记录器以使用 StreamHandler 记录到 sys.stderr (参见http://docs.python.org/howto/logging.html#configuring-logging),并在 apache conf 中定义错误日志路径、名称和级别(注意,默认的 apache 行为是仅记录“错误级别”消息)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何调试/记录 wsgi python 应用程序? 的相关文章

  • Pandas 字符串提取所有匹配项

    我正在学习 pandas 系列字符串方法中的正则表达式操作 我能够从字符串中提取第一个数字 但我的正则表达式与第二个数字不匹配 如何捕获这两个数字 注意第二行 第二个元素在这里是 NAN CODE import pandas as pd d
  • 如何忽略传递给函数的意外关键字参数?

    假设我有一些功能 f def f a None print a 现在 如果我有一本字典 比如dct a Foo 我可以打电话f dct 并得到结果Foo打印 但是 假设我有一本字典dct2 a Foo b Bar 如果我打电话f dct2
  • 重新索引错误没有意义

    I have DataFrames大小在 100k 到 2m 之间 我正在处理这个问题的框架是如此之大 但请注意 我必须对其他框架执行相同的操作 gt gt gt len data 357451 现在这个文件是通过编译许多文件创建的 所以它
  • 如何为 Intellij/PyCharm 设置 PYTHONSTARTUP 脚本

    我尝试添加PYTHONSTARTUP环境变量 我还尝试了自定义启动脚本 但更令人惊讶的是 这also没有工作 npa别名无法识别 出于一点绝望 我什至尝试添加到interpreter options 那什么也没做 实际上是什么Interpr
  • .net 垃圾收集器何时运行?

    当我调试 net 代码时 如何知道垃圾收集器何时运行 我不想控制垃圾收集器何时运行 我只希望能够知道它何时运行 我有一些代码资源不足 我知道资源没有被使用 我想知道 GC 何时运行以释放它们 哦 我想到的资源是来自 Sql 连接池的连接 而
  • 如何从 Lua 调用 Python 函数?

    我想从我的 lua 文件运行 python 脚本 我怎样才能实现这个目标 Example Python代码 sum py file def sum from python a b return a b Lua code main lua f
  • turtle.Screen().screensize() 未输出正确的屏幕尺寸[重复]

    这个问题在这里已经有答案了 我编写了一些代码来在屏幕周围随机放置点 但是 它并没有覆盖整个屏幕 import turtle import random t turtle Turtle color red green blue pink ye
  • Windows Defender 检测 Python EXE 为木马

    我制作了一个 Python 脚本 将 Windows 目录以 zip 形式邮寄给我 我使用 sched 模块添加了一个调度程序 每小时重复一次 我试图制作一个简单的同步应用程序供个人使用 在 Windows 启动时启动 我使用将其转换为 e
  • OpenCV - 我需要将彩色图像插入黑白图像并且

    我用以下代码将黑白图像插入彩色图像 没问题 face grey cv cvtColor face cv COLOR RGB2GRAY for row in range 0 face grey shape 0 for column in ra
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • 从主机名中提取域名

    是否有一种编程方式可以从给定的主机名查找域名 给出 gt www yahoo co jp 返回 gt yahoo co jp 有效但非常慢的方法是 拆分为 并从左侧删除 1 个组 使用 dnspython 加入并查询 SOA 记录 当返回有
  • 使用 boto3 从 s3 下载时使用 filename 作为文件名

    我正在使用 boto3 上传文件 如下所示 client boto3 client s3 aws access key id id aws secret access key key client upload file tmp test
  • 我可以显示我在 PHP 中设置的所有 cookie 吗?

    我正在尝试诊断 cookie 中的错误 但 cookie 的名称不是应有的名称 PHP 有没有办法打印我的域设置的所有 cookie 你有没有尝试过 print r COOKIE
  • 为什么使用 Angular 的 $log 而不是 console.log?

    我知道这是使用角度的最佳实践 log代替console log 但是 我找不到解释原因的良好文档 开发人员为什么要使用 log log首先检查浏览器是否支持console log 例如 IE 8 就没有 这可以防止在 IE 8 上显示错误
  • 如何删除 pandas 数据框中的唯一行?

    我遇到了一个看似简单的问题 在 pandas 数据框中删除唯一的行 基本上 相反drop duplicates https pandas pydata org pandas docs stable generated pandas Data
  • 如何绘制多类分类器的精度和召回率?

    我正在使用 scikit learn 我想绘制精度和召回曲线 我正在使用的分类器是RandomForestClassifier scikit learn 文档中的所有资源都使用二元分类 另外 我可以绘制多类的 ROC 曲线吗 另外 我只找到
  • 如何测试列表中多个值的成员资格

    我想测试两个或多个值是否在列表中具有成员资格 但我得到了意外的结果 gt gt gt a b in b a foo bar a True 那么 Python 可以同时测试列表中多个值的成员资格吗 这个结果意味着什么 See also How
  • 如何在 Sublime 2 REPL Mac 中运行 Python 3

    我的问题如下 我安装了 sublime 2 和 sublime repl 插件 一切正常 我唯一需要的是更改在控制台内置的 sublimerepl 上运行的 python 版本 我的意思是 我有 python 2 7 5 预先安装了 mav
  • 如何加速 pandas 字符串函数?

    我正在使用 pandas 矢量化 str split 方法来提取从 上的拆分 返回的第一个元素 我还尝试使用 df apply 与 lambda 和 str split 来产生等效的结果 使用 timeit 时 我发现 df apply 的
  • 如何将 fields 参数传递到 Google Drive Python API 调用中

    I have results drive service files list body execute where body q query string maxResults 1 为了提高性能 我想限制返回的字段 如下所述 https

随机推荐

  • 使用 AutoMapper 将 IList 映射到 (Iesi.Collections.Generic) ISet

    我已经尝试解决这个问题一天了 但一无所获 所以我希望有人可能已经解决了这个问题 我找到的最接近解决方案是如何使用 AutoMapper 简单地将 NHibernate ISet 映射到 IList and 通过 AutoMapper 将 I
  • jquery animate 用于元素属性而不是样式

    ASAIK jquery animate 函数仅接受样式属性 但我想为元素的属性设置动画 考虑一个 SVG 元素矩形
  • Django/Python 初学者:执行 python manage.pysyncdb 时出错 - psycopg2 未找到

    我使用 Macports 安装了 Pythong2 6 psycopg2 和 pgAdmin3 我的settings py是 DATABASE ENGINE postgresql psycopg2 postgresql psycopg2 p
  • Rust 借用了指针和生命周期

    在我的代码中 我有一个相互递归的树结构 如下所示 enum Child lt r gt A r Node lt r gt B C struct Node lt r gt children r Child lt r gt 25 impl lt
  • 如何从 GIF 动画中获取长度(时间)

    有没有办法知道单循环 GIF 动画需要多长时间才能完成 好吧 具体细节取决于您使用什么接口来操作这些动画 GIF 我不知道本机 Java AWT Swing 中是否有真正流畅的方式 但是基本思想是计算 帧速率 数量 帧数 如果您正在手动编写
  • pymc3:多个观察值

    我有一些观测数据想要估计参数 我认为这将是尝试 PYMC3 的好机会 我的数据由一系列记录构成 每条记录包含一对与固定的一小时时间段相关的观察结果 一项观察是给定一小时内发生的事件总数 另一个观察结果是该时间段内的成功数量 例如 一个数据点
  • 替代 VSS 进行单人表演(一人军队?)

    我已经为同一个雇主编程了 10 多年 我们唯一使用过的源代码控制是 VSS 抱歉 这就是我开始时他们所拥有的 曾经只有我们几个人 现在有两个 我们通常单独工作 所以 VSS 对我们来说工作得很好 所以 我有两个问题 1 我们是否应该切换到其
  • OpenXML 将段落样式(标题 1、标题 2、标题 3 等)添加到字处理文档

    谁能指导我如何使用开放 XML 字处理在段落上添加预定义样式 我尝试过论坛上提供的各种解决方案 但对我来说没有任何作用 这是我想要完成的任务 Create a document by supplying the filepath Wordp
  • 按钮上方滚动文本,按钮固定在底部

    我很难在 Android 应用程序中获得我想要的 GUI 布局结果 我想要的简要描述 GUI 将包括两个 TextView 和四个按钮 四个按钮水平排列 位于同一行 并固定在屏幕右下角 两个 TextView 中的第一个从屏幕顶部开始 文本
  • 如何使用运行时参数在 Scala 中创建单例对象

    我正在尝试使用运行时指定的参数创建一个单例对象 例子 object NetworkPusher val networkAdress 想象一下 networkAdress 参数来自命令行 我该如何制定解决方法来做到这一点 单例是延迟初始化的
  • 使用 Hibernate 处理文本文件

    我在用休眠在 Java 应用程序中访问我的数据库 它与 MS SQL 和 MySQL 配合得很好 但是我必须在某些表单上显示的一些数据必须来自文本文件 我所说的文本文件是指人类可读的文件 它们可以是 CSV 制表符分隔 甚至是每行的键 值对
  • 如何让顶级git跟踪另一个子目录git下的所有文件

    命令序列 mkdir 顶目录mkdir another git directory触摸文件C触摸屏Dgit 添加 git commit m 子目录初始化 cd 触摸文件触摸文件Bgit 添加 git commit m 顶层目录初始化 git
  • Spring事务不回滚

    我们遇到了 Spring 事务回滚问题 回滚似乎不起作用 在我的服务层方法中 注释为 Transactional我叫三个不同的DAOImpl类插入3条记录 中间插入从第四个表中获取数据以填充描述字段 但这失败了 我预计第一个插入会回滚 但似
  • 使用 pip 将 Python 包安装到不同的目录中?

    我知道明显的答案是使用 virtualenv 和 virtualenvwrapper 但由于各种原因我不能 不想这样做 那么如何修改命令 pip install package name to make pip将软件包安装在默认位置以外的位
  • 如何解决 wsdl2java 上 ObjectFactory 中的冲突?

    我在用着CXF and wsdl2java自动生成Web服务类 问题 不知何故 我想要连接的网络服务的某些元素有重复的名称 Two declarations cause a collision in the ObjectFactory cl
  • 获取 java.time.chrono.HijrahDate 实例的月份名称

    HijrahDate hd HijrahChronology INSTANCE date LocalDate of 2014 11 25 如果我们有HijrahDate实例 预计有一个方法UmalquraCalendar API显示月份名称
  • 我可以将 Must_use 应用于函数结果吗?

    我有一个函数返回一个f64 我想确保使用该函数的输出 而不是仅仅忽略它 有什么办法可以做到这一点吗 返回类型不用于错误处理 因此将其包装在Result or Option确实没有意义 我想要类似的东西 must use fn calcula
  • 两个 .net 程序集之间的循环引用

    我有两个程序集 A 和 B A 已存在对 B 的引用 并且必须保持这种状态 现在我对B做了一些修改 需要引用A 所以就出现了循环引用 一些细节 A 有一些属性网格 B 中的对话框需要托管这些属性网格 因此 为了避免这种循环引用问题 我尝试在
  • 交换字符串中的字母

    我需要按照以下规则交换字符串中的字母 A 被 T 取代 T 被替换为 A C 被 G 取代 G 被 C 取代 例如 ACGTA应该成为TGCAT 解决这个问题的最佳方法是什么 正在寻找java A to T T to A 找到了这个建议 S
  • 如何调试/记录 wsgi python 应用程序?

    我试过这个 usr bin python from wsgiref simple server import make server from cgi import parse qs escape import logging import