我的 Web 应用程序在多个 apache 实例上运行,因此我遇到了多进程日志记录问题。我目前正在使用 SocketHandler 来使用 SocketServer 记录到守护程序,然后将日志写入单个日志文件(类似于此示例)。
现在我正在使用 SocketHandler 进行日志记录,我无法发现套接字服务器是否/何时崩溃。例如,如果我尝试为没有侦听套接字服务器的端口创建 SocketHandler,则不会出现异常。我想捕获这种类型的错误并将其记录到文件中。
我的问题是,当使用 SocketHandler 进行日志记录时,如何发现正在使用的套接字当前未被监听?
这个问题可能很简单.
我试图给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安装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上使用时在一个文件夹中
我收到了这个错误
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中发布名称或文本时,我得到:
македонија
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)
我怎么解码呢?
我在mod_python网站上搜索过,我只找到了Python 2.5及更早版本的Apache HTTP Server 2.2文件.我用Google搜索了一下,没有太大的运气.有什么建议?
我正在做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的新手,不得不深入研究一个简单的程序,以便与我正在构建的ASP.NET应用程序集成.伪代码如下.
第2步和第3步已经到位并且也在工作,但是无法找到第1步的解决方案(我知道它应该非常简单,并且知道如何在Java/.NET/PHP和RoR中执行它,而不是在Python和在线文档/教程没有帮助我的事业).我正在使用mod_python在apache上运行python.
非常感谢任何帮助.在此先感谢Vijay
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 中???
我正在尝试在我的虚拟主机上设置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) 完成安装 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)