gpt4 book ai didi

python - 扭曲、延迟的请求以及文件与错误页面

转载 作者:太空宇宙 更新时间:2023-11-03 18:34:28 28 4
gpt4 key购买 nike

我目前正在使用 python/twisted 构建一个 http 服务器。

该服务器必须在另一个 Web 服务器上获取内容,将其存储在本地并将响应发送回客户端。如果遇到 404,它必须尝试提供本地文件,否则如果根本没有本地文件就会失败。

为了实现这一目标,我使用了不同的请求。我的代码大致如下:

class RemoteFile(Resource):
isLeaf = True

def render_GET(self, request):
# Start downloading the corresponding file on the remote server
# Will call `self.serve_local_file` when done
return NOT_DONE_YET

def serve_local_file(self, request):
if self.file_exists_for_request(request):
fileResource = File(filename)
fileResource.render(request)
else:
page = NoResource("No such file")
html = page.render(request)

# The next two lines are my problem
request.write(html)
request.finish()

我必须添加最后两行(write()finish())才能真正完成请求。对于 File 资源,我不需要这些行,因为它自己处理写入/完成,与 NoResource 不同。

这本身不是问题,但事实证明这个 page 变量不是硬编码的,它实际上是我的类上的一个 fallback 属性,这应该是成为资源。这意味着我将来可以用默认的 File 替换它。在这种情况下,我将不得不修改我的代码...

我做错了什么,还是FileErrorPage的接口(interface)不一致?

最佳答案

你的问题本身就有一个暗示:

return NOT_DONE_YET

这是 IResource 如何发出信号的一部分,表明它是否返回调用者在显式“完成”请求之前必须写入请求的字符串,或者 IResource正在为做这些事情承担责任。

检查您调用 render 的任何内容的返回值,然后采取相应措施。

关于python - 扭曲、延迟的请求以及文件与错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21850401/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com