问题标签 [zodb]

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 投票
0 回答
365 浏览

pagination - 金字塔 + ZODB 和分页

我将图像存储在我的金字塔 ZODB 应用程序中。而且我有一个列出所有图像的视图,但是当我有很多图像时,这会使页面渲染太长/太慢,因此我希望他们分页说,每页 15 张图像。

我在网上看过很多关于 webhelpers 的示例,但都是针对 SQL 的,有没有办法将 webhelpers 与 ZODB 一起使用?还是有其他用于 ZODB 分页的库?

0 投票
1 回答
161 浏览

python - 提交后是否有用于对象更改的 ZODB 挂钩?

如何设置在提交后对 ZODB 对象更改触发的钩子?我可以为 IObjectWillBeMovedEvent 和 IObjectWillBeAddedEvent 设置处理程序,但这些处理程序会在对象创建时立即触发。是否有其他我可以使用的事件或钩子只有在提交更改时才会触发?

0 投票
1 回答
491 浏览

python - ZODB 与龙卷风

我有一个用Tornado构建的小型网络应用程序,我想在其中使用ZODB进行一些数据存储。根据 ZODB 文档,支持多线程程序,但它们应该为每个线程启动一个新连接。我认为这意味着我必须做类似的事情

首先,对于所有 db-interacting 处理程序还是只需要进行写入的处理程序,新连接是否仍然需要?在启动时启动一个连接并将其用于我所有的阅读是否合理,然后仅在我需要写东西时才进行上述连接歌舞?

其次,在 Python 中抽象该模式的惯用方式是什么?我有类似的东西

记住,但这可能是我的 Lisp 展示。

也欢迎对该方法进行一般性的头部检查。

0 投票
1 回答
478 浏览

python - ZODB pool_size 的合理设置

在多线程 Web 应用程序pool_size的调用中,合理的默认值是什么?ZODB.DB

即使我是唯一一个浏览 db-interacting 处理程序的人,保留实际的默认值也会7给我一些 connection 。WARNING是否可以设置一个过高的数字?哪些因素会影响决定将其设置为什么?

0 投票
1 回答
516 浏览

python - 循环遍历 Plone 中的损坏对象

我有几个损坏的对象,我希望在 python 脚本中循环。我的用例如下:我已将我的自定义产品从 重命名my.oldproductmy.newproduct。这导致先前保存的对象my.oldproduct被破坏,因此无法访问。这里有一个详细的解决方法:更新损坏的对象

现在我想做的是在 ZMI 中创建一个 python 脚本来循环所有损坏的内容,更改/更新它们,从而使用 my.newproduct 保存它们。

我一直无法获取旧对象,因为它们未列出。查看我的 python 脚本示例以列出站点中的所有内容,但它们仍然没有显示:

我怎样才能让破碎的物体my.oldproduct被列出来?

0 投票
2 回答
247 浏览

python - ZODB 备份中的错误

我有 indico 0.92,我们用 ZODB 备份它。

该程序运行了很多时间,突然备份停止工作并出现错误:

知道什么会导致 ZODB 备份停止工作吗?

什洛米特

0 投票
2 回答
671 浏览

python - Celery worker hangs on ZEO database access (race condition?)

Problem

Celery workers are hanging on task execution when using a package which accesses a ZEO server. However, if I were to access the server directly within tasks.py, there's no problem at all.

Background

I have a program that reads and writes to a ZODB file. Because I want multiple users to be able to access and modify this database concurrently, I have it managed by a ZEO server, which should make it safe across multiple processes and threads. I define the database within a module of my program:

SSCCE

I'm obviously attempting more complex operations, but let's assume I only want the keys of a root object, or its children. I can produce the problem in this context.

I create dummy_package with the above code in a module, databases.py, and a bare-bones module meant to perform database access:


If I don't try any database access with dummy_package, I can import the database and access root without issue:

However, trying to pass a connection or a child of root makes the task hang indefinitely.

If it makes any difference, these Celery tasks are accessed by Django.

Question

So, first of all, what's going on here? Is there some sort of race condition caused by accessing the ZEO server in this way?

I could make all database access Celery's responsibility, but that will make for ugly code. Furthermore, it would ruin my program's ability to function as a standalone program. Is it not possible to interact with ZEO within a routine called by a Celery worker?

0 投票
1 回答
179 浏览

python - 在ZODB中同时修改不同的key

我使用 ZODB 作为将通过 Web 服务修改的对象的持久存储。下面是我减少问题的一个例子。增量函数是从多个线程调用的。我的问题是,当从两个线程同时调用增量时,对于不同的键,我得到了冲突错误。

我想应该可以解决这个问题,至少只要修改不同的键,以适当的方式?如果是这样,我没能找到一个关于如何...的示例(zodb-documentation 似乎有些分散在不同的站点:/)

很高兴有任何想法...

0 投票
2 回答
300 浏览

python - 一起添加多个 ZODB 数据库

我有三个通过 ZODB 模块构建的 python 对象数据库,我想将它们合并为一个。我有三个而不是一个的原因是因为每个对象都属于三个群体之一,并且在我的代码对所述对象进行分析后被添加到数据库中。每个对象的分析绝对可以并行进行。我的代码需要几天的时间才能运行,因此为了避免这一工作需要长达一周的时间,我有三台计算机,每台计算机处理来自三个群体之一的对象,并在完成后输出一个 ZODB 数据库。由于 ZODB 处理冲突的方式,我无法让三台计算机将来自不同群体的对象分析添加到同一个数据库中。本质上,在您关闭数据库之前,它是从内部锁定的。

我的问题是:1)如何将多个 .fs 数据库文件合并到一个主数据库中?每个数据库的结构完全相同——这意味着每个数据库之间的字典结构是相同的。例如,MyDB 可能代表第一个种群的 ZODB 数据库结构:

其中省略号表示更多相同。对于数据库中的每个“IDXXXXXX”键,键“property1”、“property2”等的名称都是相同的,尽管值肯定会有所不同。

2) 并行运行此代码同时仍然产生单个 ZODB 结构会更聪明吗?

如果需要澄清,请告诉我。

谢谢!

0 投票
1 回答
185 浏览

cherrypy - 在cherrypy中与数据库断开连接的标准方法?

我正在使用带有cherrypy的zodb。我正在将数据传递到 jinja2 模板中。我想在返回模板渲染之前关闭我的 zodb 连接。

我不能,因为模板在渲染时需要连接,因为数据是 zodb 数据。

这出错了...

我已经完成返回后如何关闭 zodb conn?是否有一些“请求前”和“请求后”功能我可以定义为始终拥有数据库连接?除了“在公开函数的开头明确执行 - 并在返回之前关闭它”之外,cherrypy 文档没有太多关于数据库连接的明确内容。

或者说这是标准做法......