flask-cache升级后使用出错。

36 views
Skip to first unread message

teemo

unread,
Sep 9, 2013, 3:43:58 AM9/9/13
to python-cn
一直正常使用,最近更新系统,模块都安装新的了,flask-cache提示:
PicklingError: Can't pickle <type 'function'>: attribute lookup __builtin__.function failed

网上搜到 You cannot pickle functions or SQLAlchemy objects.

我基本上缓存的都是 SQLAlchemy objects,应该怎么修改呢?

--
努力寻找不疲惫的方式

小明明

unread,
Sep 9, 2013, 10:46:57 AM9/9/13
to pyth...@googlegroups.com
不是flask-cache的问题 是你用法的问题 你使用的方法不能被对象序列化,
但是你可以把那个不能被序列化的东西当参数放到方法内部去执行(延迟),具体自己实验下,或者粘贴出来具体的部分

在 13-9-9,teemo<opy...@gmail.com> 写道:
> --
> --
> 邮件来自: `CPyUG`华蟒用户组(中文Python技术邮件列表)
> 规则: http://code.google.com/p/cpyug/wiki/PythonCn
> 发言: pyth...@googlegroups.com
> 详情: http://code.google.com/p/cpyug/wiki/CpyUg
> G+: https://plus.google.com/u/0/communities/108786798869709602787
> 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
> ---
> 您收到此邮件是因为您订阅了 Google 网上论坛的“python-cn(华蟒用户组,CPyUG 邮件列表)”论坛。
> 要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 python-cn+...@googlegroups.com
> 要查看更多选项,请访问 https://groups.google.com/groups/opt_out
>

teemo

unread,
Sep 9, 2013, 8:49:25 PM9/9/13
to python-cn
CACHE_TYPE使用的是simple,不知道有什么坏处。。

cache = Cache(config={'CACHE_TYPE': 'simple'})

@app.context_processor
    def get_article_categories():
        categories = cache.get('categories')
        if categories is None:
            #categories = [c.json for c in Category.query.order_by('sort')]
            categories=ArticleCategory.query.order_by('sort')
            cache.add('categories',categories)
        return dict(categories=categories)

基本上缓存的都是SQLAlchemy objects
--
努力寻找不疲惫的方式

Tao Yang

unread,
Sep 14, 2013, 12:54:09 PM9/14/13
to pyth...@googlegroups.com
如果确保代码没动过,一般这是升级sqlarchemy导致的,能不能pickle和flask.cache没啥关系

你做了sqlarchemy的升级了么

2013/9/10 teemo <opy...@gmail.com>:
※ Tao Yang @ Nankai University
※ Website: [http://ninehills.github.com]
Reply all
Reply to author
Forward
0 new messages