标签: mod-python

在 Python 中使用 SocketHandler 记录时捕获错误

我的 Web 应用程序在多个 apache 实例上运行,因此我遇到了多进程日志记录问题。我目前正在使用 SocketHandler 来使用 SocketServer 记录到守护程序,然后将日志写入单个日志文件(类似于此示例)。

现在我正在使用 SocketHandler 进行日志记录,我无法发现套接字服务器是否/何时崩溃。例如,如果我尝试为没有侦听套接字服务器的端口创建 SocketHandler,则不会出现异常。我想捕获这种类型的错误并将其记录到文件中。

我的问题是,当使用 SocketHandler 进行日志记录时,如何发现正在使用的套接字当前未被监听?

python sockets mod-python exception

4
推荐指数
1
解决办法
1824
查看次数

cgi.FieldStorage始终为空 - 永远不会返回POSTed表单数据

这个问题可能很简单.

我试图给python一个旋转.我认为开始这样做的一个好方法是创建一个简单的cgi脚本来处理一些表单数据并做一些魔术.我的python脚本由apache使用mod_python正确执行,并将打印出我想要打印的任何内容.

我唯一的问题是cgi.FieldStorage()总是空的.我尝试过使用POST和GET.每次试用我都填写两个表格字段.

<form action="pythonScript.py" method="POST" name="ARGH">
<input name="TaskName" type="text" />
<input name="TaskNumber" type="text" />
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

如果我将表单更改为指向perl脚本,则会正确报告表单数据.python页面总是给我相同的结果:键数:0

#!/usr/bin/python

    import cgi

    def index(req):

            pageContent = """<html><head><title>A page from"""
            pageContent += """Python</title></head><body>"""
            form = cgi.FieldStorage()
            keys = form.keys()
            keys.sort()
            pageContent += "<br />number of keys: "+str(len(keys))
            for key in keys:
                    pageContent += fieldStorage[ key ].value
            pageContent += """</body></html>"""
            return pageContent
Run Code Online (Sandbox Code Playgroud)

我使用的是Python 2.5.2和Apache/2.2.3.这是我的apache conf文件(我的脚本在/ var/www/python中):

   <Directory /var/www/python/>
      Options FollowSymLinks +ExecCGI
      Order allow,deny
      allow from all
      AddHandler mod_python .py …
Run Code Online (Sandbox Code Playgroud)

python apache cgi mod-python

3
推荐指数
1
解决办法
5549
查看次数

使用apache2在cgi-bin中执行.py文件时出错404

以前我在为python安装apache2时遇到错误,这是链接

我以为我应该继续那里,但是现在我得到一个新的错误,所以把它作为一个新的发布,这就是问题所在

我已经放置了一个包含代码的文件hello.py

#!/usr/bin/python
print "Content-type:text/html\r\n\r\n"
print '<html>'
print '<head>'
print '<title>Hello Word - First CGI Program</title>'
print '</head>'
print '<body>'
print '<h2>Hello Word! This is my first CGI program</h2>'
print '</body>'
print '</html>'
Run Code Online (Sandbox Code Playgroud)

/var/www/cgi-bin我在apache2上使用时在一个文件夹中

HTTP://localhost/cgi-bin/hello.py

我收到了这个错误

The requested URL /cgi-bin/hello.py was not found on this server. Apache/2.2.14(Ubuntu)Server at localhost Port 80
Run Code Online (Sandbox Code Playgroud)

这是我在sites-available文件夹的默认页面中找到的代码:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from …
Run Code Online (Sandbox Code Playgroud)

mod-python apache2 cgi-bin

3
推荐指数
1
解决办法
1万
查看次数

python ascii代码到utf

因此,当我用我的母语在mod_python中发布名称或文本时,我得到:

&#1084;&#1072;&#1082;&#1077;&#1076;&#1086;&#1085;&#1080;&#1112;&#1072;
Run Code Online (Sandbox Code Playgroud)

我也得到:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-9: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

当我使用:

hparser = HTMLParser.HTMLParser() 
    req.write(hparser.unescape(text)) 
Run Code Online (Sandbox Code Playgroud)

我怎么解码呢?

python mod-python

3
推荐指数
1
解决办法
2759
查看次数

是否有针对Apache HTTP Server 2.2和Python 2.6或3.0的mod_python?

我在mod_python网站上搜索过,我只找到了Python 2.5及更早版本的Apache HTTP Server 2.2文件.我用Google搜索了一下,没有太大的运气.有什么建议?

python mod-python apache2

2
推荐指数
1
解决办法
1355
查看次数

如何更改python mod_python使用的版本

我正在做django的一些介绍性的工作,到目前为止看起来真的很容易(而且很有趣),但是我已经在我安装在/ opt/local(RedHat 5.3)中的Python 2.6中做了这一切,因为redhat附带的python是2.4 .我设置了一个符号链接:

/usr/bin/python2.6 -> /opt/local/bin/python
Run Code Online (Sandbox Code Playgroud)

到目前为止,我一直在使用那个django的东西; 即

> python2.6 manage.py runserver
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试进入生产模式时,mod_python没有使用正确版本的python:

Mod_python error: "PythonHandler django.core.handlers.modpython"

Traceback (most recent call last):

  File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 287, in HandlerDispatch
    log=debug)

  File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 461, in import_module
    f, p, d = imp.find_module(parts[i], path)

ImportError: No module named django
Run Code Online (Sandbox Code Playgroud)

我在/etc/httpd/conf/httpd.conf中有这个:

<Location "/chat">
 SetHandler python-program
 PythonHandler django.core.handlers.modpython
 SetEnv DJANGO_SETTINGS_MODULE chat.settings
 PythonDebug On
 PythonPath "['/www/django/chat', '/opt/local/lib/python2.6/site-packages/django/'] + sys.path"
</Location>
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,如何让mod_python寻找python2.6而不是python?

python apache django mod-python

2
推荐指数
1
解决办法
4601
查看次数

在Python中读取请求参数

我是python的新手,不得不深入研究一个简单的程序,以便与我正在构建的ASP.NET应用程序集成.伪代码如下.

  1. 从请求中获取两个参数.(ASP.NET将通过POST调用此URL并发送两个参数)
  2. 在内部执行一些业务逻辑并构建一些响应.
  3. 写回响应,以便ASP.NET应用程序可以继续.

第2步和第3步已经到位并且也在工作,但是无法找到第1步的解决方案(我知道它应该非常简单,并且知道如何在Java/.NET/PHP和RoR中执行它,而不是在Python和在线文档/教程没有帮助我的事业).我正在使用mod_python在apache上运行python.

非常感谢任何帮助.在此先感谢Vijay

python parameters mod-python request

2
推荐指数
1
解决办法
5477
查看次数

路径中包含 C:\python 的 XP 不会运行 C:\python 中的文件

XP命令行:

helloworld.py位于C:\python
C:\python所在路径
xxxxxx为用户环境路径

这有效:

xxxxx> cd C:\python
C:\python>helloworld.py
Hello World
Run Code Online (Sandbox Code Playgroud)

这不起作用:

xxxxx> helloworld.py
Run Code Online (Sandbox Code Playgroud)

.....找不到该文件...但包含该文件的文件夹位于 PATH 中???

python mod-python

2
推荐指数
1
解决办法
340
查看次数

django - ImportError:没有名为modpython的模块

我正在尝试在我的虚拟主机上设置django并且遇到了这个错误:

MOD_PYTHON ERROR

ProcessId:      4496
Interpreter:    'ouiop'

ServerName:     'ouiop.com'
DocumentRoot:   '/var/www/vhosts/ouiop.com/httpdocs'

URI:            '/'
Location:       '/'
Directory:      None
Filename:       '/var/www/vhosts/ouiop.com/httpdocs/'
PathInfo:       ''

Phase:          'PythonHandler'
Handler:        'django.core.handlers.modpython'

Traceback (most recent call last):

  File "/usr/lib/python2.7/dist-packages/mod_python/importer.py", line 1537, in HandlerDispatch
    default=default_handler, arg=req, silent=hlist.silent)

  File "/usr/lib/python2.7/dist-packages/mod_python/importer.py", line 1202, in _process_target
    module = import_module(module_name, path=path)

  File "/usr/lib/python2.7/dist-packages/mod_python/importer.py", line 304, in import_module
    return __import__(module_name, {}, {}, ['*'])

ImportError: No module named modpython
Run Code Online (Sandbox Code Playgroud)

我在网上做了一些研究,看看是否有人有同样的问题,但没有运气解决它:/

这也是我的vhosts.conf

<Location "/">
SetHandler python-program
PythonPath "['/var/www/vhosts/ouiop.com/httpdocs/django_projects'] + sys.path"
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE ouiop.settings …
Run Code Online (Sandbox Code Playgroud)

django mod-python apache2

2
推荐指数
1
解决办法
6154
查看次数

导入 mod_python 时出错

完成安装 mod_python 后,我收到 500 内部服务器错误。我查了一下日志,上面写着:python_handler:无法获取/创建解释器。

然后我打开一个python终端并测试我是否可以导入mod_python。然后我得到如下错误:

>>> import mod_python
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/mod_python/__init__.py", line 25, in <module>
    import version
  File "/usr/local/lib/python2.7/dist-packages/mod_python/version.py", line 3
    version = "fatal: Not a git repository (or any of the parent directories): .git
                                                                              ^
SyntaxError: EOL while scanning string literal
Run Code Online (Sandbox Code Playgroud)

我使用命令 --with-python=/usr/bin/python 安装了 mod_python,版本为 2.7.3。

任何想法为什么会发生这种情况?先谢谢了!

编辑:我试图用 python2.6 重新安装 mod_python,我发现我错过了安装过程中发布的 SyntaxError。

SyntaxError: ('EOL while scanning string literal', ('/usr/local/lib/python2.6/site-packages/mod_python/version.py', 3, 79, 'version = "fatal: Not a git repository …
Run Code Online (Sandbox Code Playgroud)

python mod-python python-module

2
推荐指数
1
解决办法
2293
查看次数