所以我对Python装饰者还是个新手 - 我以前用过它们,但我从来没有自己做过.我正在阅读本教程(特定段落),我似乎不明白为什么我们需要三个级别的功能?为什么我们不能做这样的事情:
def decorator(func, *args, **kwargs):
return func(*args,**kwargs)
Run Code Online (Sandbox Code Playgroud)
谢谢 :)
所以我一直在玩原始的WSGI,cgi.FieldStorage和文件上传.我只是无法理解它如何处理文件上传.
起初它似乎只是将整个文件存储在内存中.而且我认为嗯,这应该很容易测试 - 一个大文件应该堵塞内存!..但事实并非如此.但是,当我请求文件时,它是一个字符串,而不是迭代器,文件对象或任何东西.
我已经尝试过阅读cgi模块的源代码并发现了一些关于临时文件的东西,但是它返回了一个怪异的字符串,而不是一个文件(类似的)对象!那么......它是如何运作的?!
这是我用过的代码:
import cgi
from wsgiref.simple_server import make_server
def app(environ,start_response):
start_response('200 OK',[('Content-Type','text/html')])
output = """
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="failas" />
<input type="submit" value="Varom" />
</form>
"""
fs = cgi.FieldStorage(fp=environ['wsgi.input'],environ=environ)
f = fs.getfirst('failas')
print type(f)
return output
if __name__ == '__main__' :
httpd = make_server('',8000,app)
print 'Serving'
httpd.serve_forever()
Run Code Online (Sandbox Code Playgroud)
提前致谢!:)
可能的重复:
您将如何实现基本的事件循环?
并不是一个特定于语言的问题。什么是事件循环的有效实现?到目前为止,我只遇到过这样的事情:
while (true) {
handleEvents();
sleep(100);
}
Run Code Online (Sandbox Code Playgroud)
我认为这不是最好的方法-如果睡眠时间太短,它将消耗大量CPU,如果睡眠时间太长,则该应用将无响应。
那么,有没有更好的方法?
谢谢