问题标签 [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 回答
4504 浏览

python - 集成 CherryPy Web 框架、SQLAlchemy 会话和 lighttpd 以提供高负载 Web 服务的最佳实践

我正在使用以下设置在 lighttpd 后面开发一个 CherryPy FastCGI 服务器,以启用在 CherryPy 控制器中使用 ORM SQLAlchemy 会话。但是,当我对大约 500 个循环的 14 个并发请求运行压力测试时,它开始出现类似AttributeError: '_ThreadData' object has no attribute 'scoped_session_class'inopen_dbsession()AttributeError: 'Request' object has no attribute 'scoped_session_class'inclose_dbsession()一段时间后的错误。错误率总共约为 50%。

仅当我在 lighttpd 后面运行服务器时才会发生这种情况,而不是直接通过cherrypy.engine.start(). 已确认connect()不会引发异常。

scoped_session我还尝试分配to的返回值GlobalSession(就像它在此处所做的那样),但随后它给出了诸如UnboundExceptionError和其他 SA 级错误之类的错误。(并发:10,循环:1000,错误率:16%。即使直接运行也会发生。)

有一些可能的原因,但我缺乏足够的知识来选择一个。
1. start_threadFastCGI环境下订阅不可靠吗?似乎open_dbsession()是在 2 之前调用的connect()
。是否cherrypy.thread_data由于某种原因被清除?

服务器代码

lighttpd fastcgi 配置

编辑

  • 从原始源代码中恢复了代码示例中缺少的thread_index参数(感谢注释)
  • 澄清错误不会立即发生
  • 将条件缩小到 lighttpd
0 投票
3 回答
5052 浏览

python - python postgres光标时间戳问题

我对事务数据库有些陌生,并且遇到了我试图理解的问题。

我创建了一个简单的演示,其中一个数据库连接存储在cherrypy 创建的5 个线程中的每一个中。我有一个方法可以显示存储在数据库中的时间戳表和一个按钮来添加新的时间戳记录。

该表有 2 个字段,一个用于 python 传递的 datetime.datetime.now() 时间戳,另一个用于设置为默认 NOW() 的数据库时间戳。

我有两种与数据库交互的方法。第一个将创建一个新游标,插入一个新的 given_timestamp,提交游标,并返回到索引页面。第二种方法将创建一个新游标,选择 10 个最近的时间戳并将其返回给调用者。

我希望 given_time 和 default_time 时间戳彼此之间只有几微秒的差距。但是我得到了一些奇怪的行为。如果我每隔几秒添加一次时间戳,则 default_time 不会与 given_time 相差几微秒,但通常与前一个given_time 相差几微秒。

然而,如果我大约每分钟添加一个新的时间戳,那么 given_time 和 default_time 都只有几微秒,正如预期的那样。但是,在提交第 6 个时间戳(线程数 + 1)之后,default_time 与第一个 given_time 时间戳相差几微秒。

即使我在每次使用后都明确关闭游标,但似乎前一个游标仍在被重用。如果我在完成后关闭光标并每次创建一个新光标,这怎么可能?有人可以解释一下这里发生了什么吗?

更接近答案:

我在 get_timestamps 方法中添加了 cursor.connection.commit() ,现在它为我提供了带有时间戳的准确数据。谁能解释为什么我需要调用 cursor.connection.commit() 当我所做的只是一个选择?我猜每次我得到一个游标时,一个事务就会开始(或继续使用它提交的现有事务单元)。有没有更好的方法来做到这一点,或者我每次得到一个光标时都会坚持提交,不管我用那个光标做什么?

0 投票
2 回答
2390 浏览

python - 带有 mod_wsgi/cherrypy 的soaplib

我已经按照教程使用 mod_wsgi 设置 Apache 来连接cherrypy 并创建一个运行它的站点。这是我的“myapp.wsgi”,打开http://localhost/效果很好。打开http://localhost/ape/实际上返回文本而不是肥皂响应,并且http://localhost/ape/service.wsdl返回 500 HTTP 错误代码。在运行如此简单的 SOAP 服务时我做错了什么?我怎样才能让它返回有效的 WSDL?我的代码如下

干杯

尼克

0 投票
1 回答
647 浏览

php - 如何使用 Cherrypy 设置会话名称?

在 PHP 中,我会这样做:

那么我该如何使用 Cherrypy 呢?只需要找到它的完全等价物。PHP 手册页: http: //fi2.php.net/session_name

0 投票
4 回答
22563 浏览

python - 如何将cherrypy用作静态文件的Web服务器?

.html将 CherryPy 用作将在某个文件夹中显示文件的 Web 服务器有什么简单的方法吗?所有 CherryPy 介绍性文档都声明内容是动态生成的:

有什么简单的方法可以index.html代替 HelloWorld.index() 方法吗?

0 投票
10 回答
13571 浏览

localhost - CherryPy Hello World 错误

当我运行 CherryPy Hello World 时:

...我明白了:IOError:端口 8080 未绑定在“本地主机”上。会是什么呢?

0 投票
3 回答
2775 浏览

cherrypy - 任何文件对象的serve_file

在cherrypy.lib.static.py 中有一个方法:

其中参数“path”必须是真实文件(绝对路径)。是否有类似的东西可以为任何 Python 文件对象提供服务?

0 投票
2 回答
1505 浏览

python - 在没有命令行访问权限的 Linux 托管服务提供商上安装 CherryPy

我有一个基于 linux 的网络托管服务提供商 (fatcow.com),它不提供任何命令行访问权限,也不会为我运行 CherryPy (python web 服务器) 的设置脚本。

有什么办法可以绕过这个限制,以便我可以正常安装 CherryPy?

这可能更多或 serverfault.com 问题,但也许这里有人以前处理过这个问题。

0 投票
6 回答
8140 浏览

python - 我应该在 CherryPy 中使用哪种模板技术?

我正在使用cherrypy 构建一个Web 应用程序。

你推荐我使用什么模板技术?

0 投票
2 回答
1470 浏览

python - 在cherrypy服务中处理sys.exit()

当您启动/停止 python cherrypy 服务(使用 py2exe 编译)时,这工作正常当我sys.exit()接到电话(来自我的错误处理程序)时,cherrypy 退出,但服务仍然挂起。

代码:

任何建议都会很棒:)