问题标签 [cherrypy]

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 投票
2 回答
1491 浏览

python - Python:deferToThread XMLRPC 服务器 - Twisted - Cherrypy?

这个问题与我在这里问过的其他问题有关,主要是关于在内存中对大量数据进行排序。

基本上这就是我想要/拥有的:

Twisted XMLRPC 服务器正在运行。该服务器在内存中保留了几个 (32) Foo 类的实例。每个 Foo 类都包含一个列表栏(将包含数百万条记录)。有一个服务从数据库中检索数据,并将其传递给 XMLRPC 服务器。数据基本上是一个字典,键对应于每个 Foo 实例,值是字典列表,如下所示:

然后每个 Foo 实例被传递对应于它的键的值,并且 Foo.bar 字典被更新和排序。

问题是,当在 XMLRPCController 中调用带有大量记录(比如 100K +)的更新函数时,它会停止响应我的 getData 调用,直到所有 32 个 Foo 实例都完成了 process_data 方法。我认为 deferToThread 会起作用,但我认为我误解了问题所在。

任何建议......如果它支持这种必需的行为,我愿意使用其他东西,比如 Cherrypy。


编辑

@Troy:这就是反应堆的设置方式

就 GIL 而言,将 sys.setcheckinterval() 值更改为更小的值是否是一个可行的选择,以便释放对数据的锁定以便可以读取它?

0 投票
2 回答
2582 浏览

python - CherryPy 是一个健壮的网络服务器(即,它在像 Apache 这样的巨大负载下是否可靠)?

我想知道,因为据我所知, CherryPy是纯粹用 Python 构建的,这显然比 C 等人慢。这是否意味着它只适用于开发/测试环境,或者我可以在NGINX后面使用它,就像我目前使用 Apache 和Fast CGI一样?

0 投票
1 回答
4467 浏览

python - Nginx 反向代理 POST 请求背后的 CherryPy 损坏/截断

我已将使用 Cherrypy 3.1.2 的应用程序放在配置为反向代理的 Nginx 后面。GET 请求一切正常,但所有 POST 请求都返回 HTTP 400 - 格式错误的标头。

我追踪到 CherryPy WSGI-Server 源代码以查看请求处理代码,发现如果 GET 请求的第一个请求行正确读取,例如:

对于 POST 请求,它就像:

因此,对于我的应用程序从 Nginx 接收的 POST 请求,而不是包含 GET/POST 请求行后跟 HTTP 标头的正确格式的请求:

  1. 第一个 HTTP 标头行从开头截断了一些字节
  2. 然后是一个空行,指示结束 od HTTP 标头
  3. 然后是“POST /home HTTP/1.0”,这显然是请求的第一行。
  4. 编辑:这是请求的结束,所以也没有应该遵循 HTTP POST 标头的正文数据。

此外,从 p.1 截断的字节数似乎取决于表单上有多少 POST 数据,例如,我在 /home FORM 字段中键入的字符越多,HTTP 标头中的字符就越多被删除。

显然,Nginx 在将标头传递给上游服务器(我的应用程序)时以某种方式破坏了标头。
但是:当我只是为了测试使 Nginx 重定向到一些外部网站(也使用 POST 请求)时 - 一切都很好。

所以我现在很困。

我的配置是:Windows XP Prof、Python/2.5.1、CherryPy/3.1.2、Nginx/0.8.32
浏览器:FireFox 2.0、IE 7.0
我的应用程序(独立运行)通常在多种配置下工作和测试。

我使用非常基本的 Nginx 配置,例如:

尽管尝试了网上找到的许多其他 proxy_pass 示例和配置。

任何想法在哪里寻找问题?Nginx 配置、我的 CherryPy 应用程序或其他地方?

新:我发现它可以正常工作,但仅适用于正文内容长度为零的 POST 请求(在没有任何字段的情况下为空进行测试)。
并验证从开头截断的字节数等于 Content-length + 一些小的 const 数(可能是 2)。

0 投票
1 回答
600 浏览

tree - 如何通过配置文件将 wsgi 应用程序分配给cherrypy 的根目录?

如何通过配置文件将 wsgi 应用程序分配给cherrypy 的根目录?我希望请求“ http://localhost:8080/ ”路由到我自己的 wsgiapp。我正在使用cherryd启动一个带有配置文件的cherrypy服务器,如下所示:

这是调用:

这是 config.cfg 文件:

这是 myapp.py 模块:

这是错误消息:

0 投票
2 回答
440 浏览

python - 如何使用 cherrpy 内置的数据存储

好的,我已经阅读了一段时间的cherrypy文档,但还没有找到一个简单的例子。假设我有一个简单的 hello world 站点,我如何存储数据?假设我想使用cherrypy将a = 1和b = 2存储到字典中。配置文件令人困惑。任何人都有一个非常简单的例子,可以在cherrypy中存储一个简单站点的值吗?

这是我的代码我做错了什么?我创建了一个 tmp 文件 c:/tmp,配置文件在哪里,或者我放在哪里?在我尝试添加配置之前,这段代码有效吗?

0 投票
3 回答
5186 浏览

python - 在 CherryPy 3.1 中提供静态文件的问题

我在提供静态 XML 样式表以伴随来自 CherryPy Web 应用程序的一些动态生成的输出时遇到了一些麻烦。甚至我提供静态文本文件的测试用例也失败了。

静态文件blah.txt位于/static我的应用程序根目录中的目录中。

在我的主站点文件中(conesearch.py​​ 包含 CherryPy ConeSearch 页面处理程序类):

site.config我有以下选择:

current_dir = os.path.dirname(os.path.abspath(__file__))在哪里conesearch.py

但是,我的简单测试页面(直接取自http://www.cherrypy.org/wiki/StaticContent)以 404 失败:

它正在尝试访问 127.0.0.1:8080/static/blah.txt,我认为应该是 AOK。有什么想法或建议吗?

干杯,

西蒙

0 投票
1 回答
607 浏览

python - 在 Cherrypy 中动态创建页面定义

我一直在查看 CherryPy 文档,但无法完全理解我想要做什么。我怀疑它可能更像是 Python 的东西而不是 CherryPy 的东西......

我现在的班级看起来像这样:

显然这里有很多重复。

在 managerUtils.py 中,我有一个类似于:

好的,这是一个稍微简单的观点,但我相信你明白了。

我希望能够做类似的事情:

关于如何做到这一点的任何想法?

一个答案建议这样做:

这回升了,我相信:

而不是我想要的,即:

当我按照您的建议进行操作时,出现以下 404 错误:

0 投票
2 回答
2264 浏览

python - Cheetah 和 Cherrypy:如何加载基础模板,并在开发过程中根据变化自动加载

我正在开发一个cherrypy+cheetah 应用程序,并希望改善开发体验。

当我事先手动编译模板时,我一切正常。(更新:这就是生产环境的工作方式:预编译,不要发送 *.tmpl 并将模板作为常规 python 模块加载。)但是,在开发过程中,我宁愿在每次引用模板时都加载模板,这样我就不会不需要杀死并重新启动我的应用程序。我有几个问题:

  1. 如果我有从基本模板继承的模板,我会收到导入错误(找不到基本模板)。我想我在实验期间确实有这个工作,但不幸的是没有保存它,现在我无法让它工作。
  2. 假设我得到 1. 工作,如何使它即使在基本模板中的编辑也可以在不重新启动的情况下被拾取。

下面是我应该演示问题的示例应用程序。目录结构如下:

t.py:

base.tmpl:

索引.tmpl:

像这样运行它:

0 投票
1 回答
721 浏览

python - ASP.NET 成员的开源替代方案

我目前正在支持具有越来越复杂的用户/角色/权限管理要求的 Python Web 应用程序。目前,我们正在滚动我们自己的用户、组、权限等代码和支持数据库。

我想找到类似 ASP.NET 成员资格的东西,它可以帮助管理用户身份验证和授权,而不是在继续创建越来越复杂的自定义解决方案时冒着安全问题的风险。有没有类似的项目值得一看?

0 投票
2 回答
1698 浏览

python - 相同域、不同端口的 CherryPy 会话

考虑下面的脚本。它将启动两个子进程,每个子进程都是 CherryPy 应用程序(按 Ctrl+C 或系统上的任何 KeyboardInterrupt 组合以结束它们)。如果您使用 CP 3.0 运行它(注意更改“StartServer”中的 3.0/3.1 特定行),请访问:

http://localhost:15002/

...你看到一个空的字典。然后访问:

http://localhost:15002/set?val=10

http://localhost:15002/

...您会看到新填充的字典。然后访问:

http://localhost:15012/

...然后回到

http://localhost:15002/

……什么都没有改变。

如果您在 CP 3.1 上尝试相同的操作(请记住“StartServer”中的行!),当您到达最后一步时,dict 现在是空的。这发生在 Windows 和 Debian、Python 2.5 和 2.6 中。

您可以尝试各种各样的事情:更改为文件存储、分离存储路径……唯一的区别是会话可能会被合并而不是被删除。我也阅读了另一篇关于此的文章,并且建议将会话工具配置键放在应用程序配置而不是全局配置中,但我认为这与应用程序独立运行的这种用法无关。

我该怎么做才能让独立的 CherryPy 应用程序不相互干扰?

注意:我最初在CherryPy 邮件列表上提出了这个问题,但还没有得到回复,所以我在这里尝试。我希望没关系。