有没有人在Ubuntu 9.04上使用默认的Python安装(2.6.2)成功使用mod_wsgi 2.5?
我有编译错误:
mod_wsgi.c:119:2: error: #error Sorry, mod_wsgi requires at least Python 2.3.0.
mod_wsgi.c:123:2: error: #error Sorry, mod_wsgi requires that Python supporting thread.
Run Code Online (Sandbox Code Playgroud)
哪个Python给/ usr/bin/python和/ usr/bin/python -V返回Python 2.6.2所以我不确定第一个有什么问题,老实说我不知道怎么检查编译中使用的选项Ubuntu上的默认Python.
还有很多其他错误,但这些错误看起来最相关.
还有什么可能是错的?
我是Python世界的新手.我来自java和ABAP世界,他们的应用服务器能够处理有状态请求.
在使用WSGI的python中也可以吗?
或者在其他层处理有状态和无状态?
我正在制作一个python程序来腌制一些数据,然后将其保存到文件中。它不起作用。
path="C:/foo/bar"
def newData():
import pickle
data = [
["foo"],
["bar"],
["baz"]
]
file = None
i = 0
while file==None:
if not exists(path + str(i)+".data"):
file = open(path + str(i)+".data", "w+")
else:
i+=1
pickle.dump(data, file)
close(file)
return path + str(i)+".data"
Run Code Online (Sandbox Code Playgroud)
我收到一个名称错误,指出“未定义全局名称关闭”:
File "C:/foo/bar/baz.py", line 26, in newData
close(file)
NameError: global name 'close' is not defined
Run Code Online (Sandbox Code Playgroud)
如果我对其中带有close的行进行注释,则会得到:
File "C:/foo/bar/baz.py", line 26, in newData
#close(file)
NameError: global name 'close' is not defined
Run Code Online (Sandbox Code Playgroud)
我的代码是否错误(是)?怎么样?
我可以一起使用Twisted和mod_wsgi来尝试性能提升吗?
由于我没有启动reactor.listenTCP(...),我如何使用扭曲的异步方法?:
我尝试过的:
> server.wsgi
def application(environ, start_response):
status = '200 OK'
output = 'Pong!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
# How do I call a twisted async method from here?!
# like deferToThread(object.send, environ).
return [output]
resource = WSGIResource(reactor, reactor.getThreadPool(), application)
Run Code Online (Sandbox Code Playgroud) 在我的帖子处理程序中,消息的主体是一个json.在self.request.body中,我收到一条HTML编码的消息:
%7B+%22name%22%3A+%22John+Dao%22%2C+%22Age%22%3A+42+%7D=
Run Code Online (Sandbox Code Playgroud)
看一下网络流量,有效载荷实际上是:
{ "name": "John Dao", "Age": 42 }
Run Code Online (Sandbox Code Playgroud)
所以,我很确定编码发生在服务器上.我如何解码这个字符串,或以某种方式告诉json.loads接受编码的消息,或者更好 - 告诉WSGI(它是谷歌应用引擎)不编码身体与beging?
import os, cgi
#self_hosting script
tags = """<form enctype="multipart/form-data" action="save_file.py" method="post">
<p>File: <input type="file" name="file"></p>
<p><input type="submit" value="Upload"></p>
</form>"""
def Request(environ, start_response):
# use cgi module to read data
form = cgi.FieldStorage(fp=environ['wsgi.input'], environ=environ, keep_blank_values=True)
try:
fileitem = form['file']
except KeyError:
fileitem = None
if fileitem and fileitem.file:
fn = os.path.basename(fileitem.filename)
with open(fn, 'wb') as f:
data = fileitem.file.read(1024)
while data:
f.write(data)
data = fileitem.file.read(1024)
message = 'The file "' + fn + '" was uploaded successfully'
else :
message = …Run Code Online (Sandbox Code Playgroud) 我继承了以下 Django 视图代码,由另一个 Web 服务用于提供可下载版本的输出数据:
def index(request):
# ... (snip) ...
data = base64.decodestring(request.POST['data'])
filename = request.POST['filename']
wrapper = FileWrapper(StringIO(data))
response = HttpResponse(wrapper, content_type=guess_type(str(filename))[0])
response['Content-Length'] = len(data)
response['Content-Disposition'] = "attachment; filename=" + filename
return response
Run Code Online (Sandbox Code Playgroud)
该函数本身(针对 Django 1.0 编写)在升级到 1.5 后仍然可以正常工作。不幸的是,涵盖此视图的测试现在失败了:
def testDownload(self):
self.client.login(username='test', password='test')
real = 'abc' * 100
data = base64.encodestring(real)
response = self.client.post("/api/v1/download/", {'data': data, 'filename': 'out.jpg'})
self.assertEqual(real, response.content)
self.assertEqual(response['Content-Disposition'], 'attachment; filename=out.jpg')
Run Code Online (Sandbox Code Playgroud)
和错误:
Traceback (most recent call last):
File "/home/fred/.secret_projects/final/gerbils/tests/amf.py", line 548, in testDownload
self.assertEqual(real, response.content)
File …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一些Python 3代码来处理通过Web表单(使用wsgi)上传的csv文件。我设法将文件上传了,但是我在努力使用Python的csv工具来处理它。这似乎与字节vs字符串有关。
这是我尝试过的:
import cgi, csv
form = cgi.FieldStorage(fp=environ['wsgi.input'],environ=environ)
upload = form['upload']
file = upload.file
data = csv.DictReader(file)
for line in data:
#Do stuff here to process csv file
Run Code Online (Sandbox Code Playgroud)
它到达“用于数据行”的位置,然后出现以下错误消息:
_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
Run Code Online (Sandbox Code Playgroud)
所以问题是我的文件是二进制文件,但是csv需要一个字符串文件,对吗?知道我该如何解决吗?
我想到的一种可能的解决方法是,仅读取文件的行而不使用csv模块并手动处理数据,这虽然可行,但似乎有点麻烦。如果可能的话,最好使用Python的csv模块的功能。
从中上传文件的Web表单具有属性
enctype="multipart/form-data"
Run Code Online (Sandbox Code Playgroud)
上传文件需要我收集的内容。
我想知道如何$_GET在python脚本上显示请求()?
请注意,我mod_python用作UBUNTU服务器上运行apache2的基本Web服务器。
如果您有任何想法,将非常感谢您的帮助:)
其他Python网络服务器(例如Django等)...在我的情况下需要注意,因为我仅针对一个特定任务运行一个python脚本:)
我正在使用 Django 开发一个工具,供我的组织内部使用。它用于搜索和标记文档(使用 Haystack 和 Solr),并将用于不同的项目。我的团队目前有一个工作原型,我们希望“在野外”部署它。
我们的安全环境很严格。项目文档位于网络驱动器上的子文件夹中,并且根据用户的 Windows 凭据限制对这些文件夹的访问(我们还有一个使用相同凭据的 MS SQL 服务器)。一个用户只能访问自己参与的项目。由于我们是微软的专卖店,如果我们想在公司内网部署我们的应用程序,我们需要使用一个IIS服务器来处理这些权限。团队中没有人具备使用 IIS、Active Directory 所需的知识,而且我们的 IT 部门已经人满为患。简而言之,我们不是网络开发人员,我们无法立即接触到任何有经验的人。
我的 hacky 解决方案是完全放弃 IIS,让每个最终用户在本地运行一个轻量级服务器(即 CherryPy),同时每个用户都保留对公共项目特定数据库的访问权限(例如,位于网络驱动器上的 SQLite DB 或 MS 上的 DB SQL 服务器)。为了使用该工具,他们只需启动一个多合一的批处理脚本并将浏览器指向127.0.0.1:8000. 我知道这有多丑陋,但我觉得它利用了已经到位的安全措施(请注意,在给定的项目中永远不要期望超过 10 个同时用户)。这是一个糟糕的主意吗,如果是这样,什么是更好的解决方案?
wsgi ×10
python ×8
django ×2
mod-wsgi ×2
cgi ×1
cherrypy ×1
csv ×1
iis ×1
mod-python ×1
nameerror ×1
pickle ×1
post ×1
python-2.7 ×1
python-3.x ×1
stringio ×1
twisted ×1
twisted.web ×1
ubuntu ×1