问题标签 [mod-python]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何在 mod_python 中打开和传输文件系统上的文件?
我是 mod_python 和 Apache 的新手,在 GET 请求后我无法将文件返回给用户。我现在有一个非常简单的设置,并希望简单地打开文件并将其写入响应:
但是,当我使用 open() 时出现错误,说该文件不存在(尽管我已经检查了十几次)。使用相对和绝对文件路径时会发生这种情况。
我有两个问题:
- 为什么 open() 找不到正确的文件?
- 从文件系统返回文件的最佳方法是什么?(我要求确保我没有错过使用 mod_python 返回文件的更好方法。)
谢谢
编辑:找到这个线程后:http: //www.programmingforums.org/thread12384.html 我发现如果我将文件移动到家外的另一个目录, open() 对我有用(我是 /home/myname 的别名/httpdocs,但如果我使用 /data,它就可以工作)。任何想法为什么有效?
编辑 2:我的调试错误的一部分,根据要求:
python - 登录 mod_python/apache
使 python 的日志记录模块与 apache/modpython 一起工作的标准方法是什么?
我想调用 mylog.warn('whatever') 并调用 req.log_error() 其中 req 是 modpython 请求。
有没有简单的方法来设置它?
python - mod_python 发布者和漂亮的 URL
我是 Python 的新手(我正在退出 PHP,因为它越来越糟糕),并且我正在通过移植我的旧代码进行比赛。一件事:
我有一个文件/foo.py,其中包含函数 index() 和 bar(),因此,与发布者一起,我可以按照文档的建议访问http://domain/foo/bar和http://domain/foo 。
我怎样才能拥有它,以便我可以做到:
http://domain/foo/bar/a1/a2/a3/an/ ...
这样发布者启动 bar() 然后我可以访问 URL 以获取 /a1/a2/... 我得到的只是 Forbidden :) (我不想在所有内容上使用 mod_rewrite)
哦,我在 2.5.2 提前谢谢
更新:理想的解决方案是发布者可以在 URL 中启动最右分辨率,并简单地使 a1/a2/a3.. 可通过 apache 模块访问。也许是 apache 指令和发布者的组合?
已解决(ish):魔术调用()方法等的答案多汁!虽然我认为我会修改发布者或编写自己的发布者以使用最右匹配以类似的方式检查对象,然后允许最右匹配使用 apache 模块访问 URL。谢谢大家!
python - Apache HTTP Server 2.2 和 Python 2.6 或 3.0 是否有 mod_python?
我浏览了mod_python 网站,只找到了适用于 Python 2.5 和更早版本的 Apache HTTP Server 2.2 的文件。我用谷歌搜索了一下,没有很大的运气。有什么建议么?
python - Python 模块(按路径)
我正在为 mod_python 的 publisher.py 写一个最小的替代品
基本前提是它正在加载基于 URL 方案的模块:
其中 /foo/ 可能是一个目录,而“bar”是 /foo/index.py 中可发布类中的 ExposedBar 方法。同样 /foo 可能映射到 /foo.py 并且 bar 是公开类中的一个方法。这的语义并不重要。我有一条线:
然后检查模块是否有适当的类/函数/方法。当进程尽可能地获取剩余的 URI 数据时,/a/b/c 将传递给该方法或函数。
这工作正常,直到我有 /var/www/html/foo/index.py 和 /var/www/html/bar/index.py
在浏览器中查看时,选择“index.py”是相当随机的,即使我将第一个搜索路径设置为“/var/www/html/foo”或“/var/www/html/bar”并且然后加载 __import__('index')。我不知道为什么它是通过看似随机的选择找到的。这通过以下方式显示:
那么这个问题是,为什么 __import__ 会随机选择任一索引。如果路径是“/var/www/html”,我会理解这一点,但事实并非如此。第二:
我可以通过绝对路径将模块加载到模块对象中吗?无需修改 sys.path。我在 __import__ 或 new.module() 上找不到任何文档。
php - mod_php 与 mod_python
为什么 mod_python 是 oop 而 mod_php 不是?
示例:我们去 www.example.com/dir1/dir2
如果你使用 mod_python apache 打开 www/dir1.py 并调用 dir2 方法但是如果你使用 php 模块 apache 打开 www/dir1/dir2/index.php
python - 使用 mod_python 时 python 日志记录模块的不同行为
我们有一个令人讨厌的问题,我们看到 python 日志记录模块在我们的服务器上使用 mod_python 运行时表现不同。在 shell 或 django 中使用 runserver 命令或 mod_wsgi 执行相同的代码时,行为是正确的:
然后我们进行以下日志记录:
2009-05-28 10:36:43,740,DEBUG,error_middleware.py:31,[logger={'name': 'site-errors', 'parent': <logging.RootLogger instance at 0x85f8aac>, 'handlers': [], 'level': 0, 'disabled': 0, 'manager': <logging.Manager instance at 0x85f8aec>, 'propagate': 1, 'filters': []}]
2009-05-28 10:36:43,740,DEBUG,error_middleware.py:32,[logger.parent={'name': 'root', 'parent': None, 'handlers': [<logging.StreamHandler instance at 0x8ec612c>, <logging.handlers.RotatingFileHandler instance at 0x8ec616c>], 'level': 10, 'disabled': 0, 'propagate': 1, 'filters': []}]
可以看到,没有为子记录器“站点错误”设置处理程序或级别。
日志配置在 settings.py 中完成:
第二个问题是我们还在 __init__.py 中添加了一个自定义处理程序,该处理程序作为 error_middleware.py 驻留在文件夹中:
在日志中看不到自定义处理程序!
如果有人知道问题出在哪里,请告诉我们!不要犹豫,要求提供更多信息。这肯定有助于解决问题。
python - 配置 Apache 以从 mod_python 错误中恢复
我正在使用 mod_python 在 Apache 上托管一个 Django 应用程序。偶尔,我得到一些神秘的 mod_python 错误,通常是ImportError
各种各样的,尽管通常不是指同一个模块。问题是,这些似乎是针对单个分叉子进程的,而其他子进程运行良好,即使我强制要求使用问题进程出错的模块的行为也是如此。一旦进程遇到错误,每次 Apache 选择它来处理请求时,它总是会提供相同的回溯。(这也很麻烦,因为我的用户不一定会在第一次出现错误时报告错误,并且一旦过程遇到错误。)
与配置 Apache 相比,我对配置 Django 的了解更多,但这对我没有任何帮助,因为请求永远不会到达 Django 进行处理。理想情况下,我应该解决根本问题,这可能涉及我的代码、项目或机器配置,但在那之前,我需要帮助来诊断和缓解问题。
- 有什么方法可以配置 Apache 日志以包含子进程 ID?
- 如果遇到错误,有什么方法可以强制子进程重新生成?
- 我应该知道与此相关的任何已知问题吗?
python - 真的很奇怪(mod)_python问题
这个很难解释!
我正在编写一个通过 mod_python 运行的 python 应用程序。在每个请求中,返回的输出都不同,即使逻辑是“固定的”。
我有两个班,classA
和classB
。这样:
这是我所拥有的一个严重剪断的版本。但是我剪掉的东西并没有改变控制流。只有一个地方MethodB()
被称为。那是从__init__()
.classA
您会期望以下输出:
但是,看似随机地获得上述正确输出或:
stacktrace 显示methodB
第二次从__init__
. methodB
应该只调用一次。如果它被第二次调用,你会期望其他逻辑__init__
也被执行两次。但是之前或之后methodB
都没有执行,也没有递归。
我通常不会求助于使用 SO 进行调试,但我一直在为此挠头。
版本:2.5.2 r252:60911
提前致谢
编辑 一些暗示问题可能出在其他地方的线索....对代码段的上述更改会导致每 250 次左右的点击中出现奇怪的输出 1。这很奇怪。
打印“In methodB”之前的输出越多,随后打印的错误就越多……平均而言,不是直接比率。它甚至在 Lynx 中也是如此。
我要回到绘图板上。
:(
作为回应
mod_python 和 Apache 似乎有婚姻问题。重新启动,对于一些请求来说一切都很好。然后一切都变得越来越梨形。发行时
这需要很长的时间。RAM 也被请求吞噬了。我对 Apache 的内部结构不是很熟悉,但感觉就像(感谢 Nadia)线程保持活动状态并随机对接请求。这简直是疯了。
按照 S.Lott 和 Nadia 的建议迁移到 mod_wsgi
再次感谢!!
django - Mod_python 错误:ImportError:无法导入设置
试图让 Django 与 Apache 一起工作,但出现以下错误:
ImportError:无法导入设置“MyDjangoApp.settings”(它在 sys.path 上吗?是否有语法错误?):没有名为 MyDjangoApp.settings 的模块
我的 Django 应用程序位于 /home/user/django/MyDjangoApp/
我的 httpd.conf 位置部分如下所示:
请告诉我如何更正位置部分以使 Django 工作?