问题标签 [basehttpserver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
13029 浏览

python - How to implement Timeout in BaseHTTPServer.BaseHTTPRequestHandler Python

In my python script, I am trying to run a web server:

I have a request handler class:

Now I always wait for some data to catch in do_GET. I want to implement a timeout operation where I want this web server to close after lets say 60 seconds. I am not able to implement that. Please suggest me how can I implement auto shut down operation for web server in this scenario.

Thanks Tara Singh

0 投票
3 回答
11228 浏览

python - 如何使用 Python BaseHTTPServerRequestHandler do_GET 方法提供图像内容类型?

我正在使用 BaseHTTPServer 来提供 Web 内容。我可以提供内容类型“text/html”或“text/css”甚至“text/js”,它会在浏览器端呈现。但是当我尝试

self.send_header('Content-type', 'image/png')

对于 .png 文件,它根本不渲染。

这是一个示例:

这对javascript很有用

当我将其标记为客户端时,这似乎不会呈现图像内容。它显示为损坏的图像。

有任何想法吗?

0 投票
1 回答
1662 浏览

python - python basehttpserver:我可以修改 404 响应吗?

是否可以修改从 pythons basehttpserver 库发送的 404 响应页面?

0 投票
1 回答
2031 浏览

python - 如何从 BaseHTTPRequestHandler 访问 HTTPServer 的成员?

我正在整理一个涉及 GUI、HTTP 和 TCP 服务器的小应用程序。GUI 控制从 HTTP 和 TCP 服务器返回到客户端的响应。我使用 HTTPServer 和 SocketServer.TCPServer 类作为服务器,以及 BaseHTTPRequestHandler 和 StreamRequestHandler 的子类。但是,让我们首先关注 HTTP 方面的事情。

当 HTTPServer 收到请求时,它应该检查 GUI 的状态,并做出适当的响应。我已向指向 GUI 的 HTTPServer 添加了一个成员变量,但无法找到从 BaseHTTPRequestHandler 子类访问此字段的好方法。如何才能做到这一点?

以下是我目前拥有的代码,尽管 Python 会引发异常MyHTTPHandler instance has no attribute 'server'

0 投票
1 回答
11533 浏览

python - 从 BaseHTTPRequestHandler 中的 HTTP 请求获取 Host 字段

我正在使用 BaseHTTPRequestHandler 类编写脚本。在do_GET(self)方法中,我需要Host从 HTTP 请求中获取字段的内容。我可以通过对str(self.headers)此处提出的类似内容进行正则表达式来做到这一点:Determine site domain in BaseHTTPServer,但这有点难看,我想知道是否有更清洁的方法可以做到这一点。

提前致谢。

0 投票
1 回答
48425 浏览

python - 如何在 BaseHTTPRequestHandler.do_POST() 中提取 HTTP 消息体?

在我可以简单地通过属性访问 POST 请求的标头的do_POST()方法中。但我找不到用于访问消息正文的类似属性。那我该怎么做呢?BaseHTTPRequestHandlerself.headers

0 投票
3 回答
20671 浏览

python - Python BaseHTTPServer,如何捕获/捕获“断管”错误?

我在 Python 中构建了一个简短的 url 翻译引擎,我看到了大量的“断管”错误,我很好奇在使用 BaseHTTPServer 类时如何最好地捕获它。这不是完整的代码,但可以让您了解我目前在做什么:

代码本身运行良好,但在生产时几乎立即开始抛出错误:

这些错误的大部分似乎源于调用 send_header() 方法时遇到问题,我要写的是:

所以我很好奇我的代码在哪里尝试捕获这个 IO 异常......我是否围绕每个 self.send_header/self.end_headers/self.wfile.write 调用编写 try/except 调用?我不时看到的另一个错误是这个,但不确定要观察哪个异常才能捕捉到这个:

0 投票
1 回答
921 浏览

python - 如何在 BaseHTTP 类“WebServer”中获取另一个类的变量/函数

renegade.py(主要之前)

网络服务器.py

0 投票
4 回答
1017 浏览

python - 您将如何在 Python 中模拟 Web 应用程序(用于测试 Django 项目)

我在 Django 中的应用程序从另一个应用程序的 HTML 中抓取并导入数据。我测试了每个解析函数,并想测试将通过其他应用程序的爬虫。在此之后,我想做一些集成测试。为了使测试尽可能易于运行,我想通过创建一个小 Web 应用程序来模拟导入的 Web 应用程序,该 Web 应用程序提供一些硬编码的 HTML 并具有我将要经过的所有路径。

编辑:另外,我的模拟必须有一些小的动态行为 - 例如,用于测试失败和成功的登录。所以我不能只提供静态文件。

你将如何创建这样一个模拟应用程序?你会子类BaseHTTPServer吗?电脑动画?使用一些框架(如斜纹布,使用 Quixote)?或者使用 Django 是否合理?那是我正在考虑使用的解决方案,但是对于这样的问题,Django 似乎太复杂了;OTOH,对于如此小的需求,另一个框架将过于依赖,而且BaseHTTPServer太原始而无法使用。

第二次编辑:我对模拟课程、请求等不感兴趣。这不是我想要使用的方法,使用这种方法的建议不是对我的回答(尽管我很感谢好心的人建议我直到现在)。如果想我的问题太难了,就忘了我谈到了测试——一般来说,你会如何粗略地模拟一个使用 Python 的 Web 应用程序?

0 投票
1 回答
2030 浏览

javascript - baseHTTPserver 不能使用 javascript 库

我正在构建一个基于 python 的网络服务器(是的,python 对于 web 服务器来说是一个糟糕的选择,但这是我唯一的选择对于我的目的,还有另一个不错的选择,例如 PHP,但我仅限于 python)

我使用 ProtoVis 进行一些数据可视化。(基于 JavaScript 的可视化工具)

如果我只是将它们复制并粘贴到测试文件中并重命名 .html (假设我在它旁边提取了 protovis 库),则以下代码可以工作

如果您想尝试,请在此处获取https://github.com/mbostock/protovis/zipball/v3.3.1

但是,如果我在 baseHTTPserver 中返回上述代码,它似乎不起作用。根据我的调查,“protovis/protovis.js”中的库似乎没有正确包含。

其中 chart() 函数返回上面的行。

我正在使用 python 2.6 在 CentOS 6.2 下工作,我需要在 baseHTTPserver 中做些什么来包含我正在使用的那个 javascript 库吗?相同的代码在 Apache + PHP 上运行良好,我只是简单地回显它们。

任何的想法?

========================解决方法========================

与 Apache+PHP 不同,BaseHTTPServer 不会只为您放入该文件夹的任何内容提供服务。正如 Matthew 所描述的,您必须自己做,或者从不同的服务器提供 protovis.js(甚至可以是在不同端口上运行的 SimpleHTTPServer)。——瓦西里·法罗诺夫

请参阅下面 Matthew Adams 的说明

我必须做的是在处理 JavaScript 文件的 do_GET() 中添加另一个方法来解决这个问题

这解决了这个问题。

谢谢大家的解决方案,我真的很感激