Python SDK 2.9.3 File保存一直报错,但实际已经保存成功。

使用 Python 3.9.6, Python SDK 2.9.3,云引擎环境。
操作的数据,是一个JSON字符串转成bytes,然后用zlib压缩一下而已。实际file已经保存成功,数据表里也已经关联成功,但是一直报错,看起来像是json库不兼容。麻烦帮忙看下什么问题?用try去忽略这个错误,不是个好办法。

此外:
1、是否可以像JavaScript 等SDK那样,直接保存obj,然后file也会自动保存?

file = leancloud.File("report.gz", zlib.compress(data))
obj.set("reportFile", file)
obj.save()

2、如果我想在云引擎模版的cloud.py之外的文件里定义云函数(比如:home.py),该怎么关联到wsgi.py的application上?


非常感谢反馈问题。

实际file已经保存成功,数据表里也已经关联成功,但是一直报错

方便上传一下触发报错的文件吗?我们试下能不能复现。

是否可以像JavaScript 等SDK那样,直接保存obj,然后file也会自动保存?

目前保存没有 JavaScript SDK 那么智能。我们没想好要不要加这个特性,不过如果要加的话,也要等下一个大版本升级了: https://github.com/leancloud/python-sdk/issues/494#issuecomment-874598082

如果我想在云引擎模版的cloud.py之外的文件里定义云函数(比如:home.py),该怎么关联到wsgi.py的application上?

一般建议就在 cloud.py 里定义云函数。如果把 cloud.py 改名为 home.py 的话,那 wsgi.py 中的导入语句也要改下,from cloud import engine 要改成 from home import engine

1、文件链接已发您QQ;
2、建议加上啊,不然在时间上,要进行两次请求,肯定会慢一些;
3、我不是说单纯的改名为home.py,而是类似cloud.py home.py home1.py home2.py home3.py这些文件里都定义了一些云函数,然后把它们像JS SDK那样组织起来。

抱歉,上周事情比较多,现在才回复。

确实存在这个问题,Python 2 下不会报错,但 Python 3 下就会报错(虽然文件上传是成功的),我们会尽快修复一下。

这些文件里都定义了一些云函数

建议把云函数都统一列在 cloud.py 里,这样要找一个云函数也比较方便,如果云函数比较多,定义比较长,嫌 cloud.py 文件太长的话,那可以把具体的定义写在其他文件中,然后在 cloud.py 中导入装饰一下,例如:

from leancloud import Engine
from leancloud import LeanEngineError
# hi 云函数的定义写在 welcome.py 中
from welcome import hi

engine = Engine()

# hello 直接定义在 cloud.py 文件中
@engine.define
def hello(**params):
    if 'name' in params:
        return 'Hello, {}!'.format(params['name'])
    else:
        return 'Hello, LeanCloud!'

# hi 定义在别处,引入后装饰一下
hi = engine.define(hi)

好的,非常感谢。如果有SDK有更新,可否论坛回复一下啊,我好第一时间更新下。

2.9.4 已经发布,修复了这个问题。