有没有办法在grok.CodeView
类中标记可遍历的方法,就像使用Zope 3 BrowserView和allowed_attributes
ZCML配置指令一样?
我找到了文档,grok.traversable()
但看起来这样的方法在五个grok包中不存在.
我认为这个问题与Zope无关.尽管如此,我还是要解释一下我要做的事情:
我在Zope中使用PUT_factory将图像上传到每个FTP的ZODB.上传的图像将作为Zope Image保存在新创建的容器对象中.这工作正常,但我想调整图像大小,如果它超过一定的大小(宽度和高度).所以我使用PIL的缩略图功能来调整它们的大小,即200x200.只要上传的图像相对较小,这就可以正常工作.我没有查看确切的限制,但976x1296px仍然可以.
随着更大的图片,我得到:
Module PIL.Image, line 1559, in thumbnail
Module PIL.ImageFile, line 201, in load
IOError: image file is truncated (nn bytes not processed).
Run Code Online (Sandbox Code Playgroud)
我从相机测试了很多jpeg.我不认为它们都被截断了.
这是我的代码:
if img and img.meta_type == 'Image':
pilImg = PIL.Image.open( StringIO(str(img.data)) )
elif imgData:
pilImg = PIL.Image.open( StringIO(imgData) )
pilImg.thumbnail((width, height), PIL.Image.ANTIALIAS)
Run Code Online (Sandbox Code Playgroud)
因为我正在使用PUT_factory,所以我没有文件对象,我使用的是工厂的原始数据或以前创建的(Zope)Image对象.
我听说PIL在超过一定大小时处理图像数据的方式不同,但我不知道如何调整代码.或者它与PIL的延迟加载有关?
如何使用Chameleon或Zope页面模板轻松创建CSS斑马条纹?我想为表中的每一行添加odd
和even
类,但是使用条件repeat/name/odd
或者repeat/name/even
看起来相当冗长,即使使用条件表达式:
<table>
<tr tal:repeat="row rows"
tal:attributes="class python:repeat['row'].odd and 'odd' or 'even'">
<td tal:repeat="col row" tal:content="col">column text text</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
如果您有多个要计算的类,这将变得特别繁琐.
我已经开始在我的代码中使用Zope接口,截至目前,它们实际上只是文档.我使用它们来指定类应具有的属性,在适当的类中显式实现它们,并在我期望的位置显式检查它们.这很好,但我希望他们在可能的情况下做更多的事情,比如实际验证该类是否已经实现了接口,而不仅仅是验证我已经说过该类实现了接口.我已经阅读了几次zope wiki,但仍然看不到比我目前正在做的更多的接口使用.所以,我的问题是你还可以使用这些接口,以及如何使用它们.
我正在尝试转储所有活动线程的列表,包括每个线程的当前堆栈.我可以使用threading.enumerate()获取所有线程的列表,但我无法找到从那里到达堆栈的方法.
背景:一个Zope/Plone应用程序不时出现问题,消耗100%的CPU并需要重新启动.我感觉这是一个没有正确终止的循环,但我无法在test-environemt中重现它以进行验证.我设法注册一个可以从外部触发的信号处理程序,所以我可以在情况再次发生时立即触发一些代码.如果我可以为所有活动线程转储堆栈跟踪,这将给我一个问题的线索.洞的东西在python 2.4上运行......
关于如何追踪这些情况的任何想法都值得赞赏:)
干杯,克里斯
我有一个返回TimeOut的Sql Alchemy应用程序:
TimeoutError:达到大小为5的QueuePool限制溢出10,连接超时,超时30
我在另一篇文章中读到,当我不关闭会话时会发生这种情况,但我不知道这是否适用于我的代码:
我在init.py中连接到数据库:
from .dbmodels import (
DBSession,
Base,
engine = create_engine("mysql://" + loadConfigVar("user") + ":" + loadConfigVar("password") + "@" + loadConfigVar("host") + "/" + loadConfigVar("schema"))
#Sets the engine to the session and the Base model class
DBSession.configure(bind=engine)
Base.metadata.bind = engine
Run Code Online (Sandbox Code Playgroud)
然后在另一个python文件中我收集了两个函数中的一些数据,但是使用了我在init.py中初始化的DBSession:
from .dbmodels import DBSession
from .dbmodels import resourcestatsModel
def getFeaturedGroups(max = 1):
try:
#Get the number of download per resource
transaction.commit()
rescount = DBSession.connection().execute("select resource_id,count(resource_id) as total FROM resourcestats")
#Move the data to an array
resources …
Run Code Online (Sandbox Code Playgroud) 我目前在我的Mac上安装了多个版本的Python,它附带了一个版本,我最近从python.org下载的版本,用于在本地运行Zope的旧版本以及Appengine正在使用的另一个版本.这有点乱.使用一个版本的python来统治它们的任何建议?如何删除旧版本并将我的所有应用程序链接到单个安装.我应该知道的任何Mac特定陷阱?这是一个愚蠢的想法吗?
我正在研究一种大量使用鸡蛋的Python程序(Plone).这意味着有198个目录充满了我可能想要在调试时搜索的Python代码.有没有一种很好的方法只搜索那些目录中的.py文件,避免不相关的代码和大型二进制文件?
看plone.org找到一种方法来定期打包我的实例的ZODB我只能找到http://plone.org/documentation/faq/how-do-i-pack-the-zodb,而不是谈论自动化包,但只是手动启动的.
我知道我可以使用wget或curl模拟手动包,但我想知道这是否是生产网站使用的最佳实践.
Plone非常复杂.Zope 2,Zope3,Five,ZCML,ZODB,ZEO,一大堆首字母缩写词和缩写词.
这很难开始,目前的状态似乎尚未确定.它主要基于Zope2,但通过Five合并了Zope3.并且到处都有XML配置文件.
陡峭的学习曲线是否付出了代价?这种复杂性今天仍然合理吗?
背景:我需要一个平台.客户通常需要CMS.我目前正在阅读" 专业Plone开发 ",没有Plone的先验知识.
问题是:客户并不总是想要这样,而事先你也无法知道.有一件事是肯定的:他们不想要Plone的默认主题.但任何其他功能都是风险.你不能只是开始并说" 如果你想看到Plone的复杂性,你必须要求它. "当你不知道系统足够好计划时.