存储数据时偶尔出现ReadTimeout问题

当更新存储某数据时偶尔会出现ReadTimeout问题,导致没有存成功,但代码中会先后存储A、B两条数据,如果A成功了B没成功,会导致很严重的数据不同步问题。请问这个情况该如何避免?谢谢!
问题报错如下:
STDERR web-s 08:31:38
File "/usr/share/pyenv/versions/2.7.13/lib/python2.7/site-packages/leancloud/object_.py", line 240, in save
STDERR web-s 08:31:38
response = client.put(url, data)
STDERR web-s 08:31:38
File "/usr/share/pyenv/versions/2.7.13/lib/python2.7/site-packages/leancloud/client.py", line 90, in new_func
STDERR web-s 08:31:38
return func(headers=headers, *args, **kwargs)
STDERR web-s 08:31:38
File "/usr/share/pyenv/versions/2.7.13/lib/python2.7/site-packages/leancloud/client.py", line 147, in new_func
STDERR web-s 08:31:38
response = func(*args, **kwargs)
STDERR web-s 08:31:38
File "/usr/share/pyenv/versions/2.7.13/lib/python2.7/site-packages/leancloud/client.py", line 222, in put
STDERR web-s 08:31:38
hooks=request_hooks,
STDERR web-s 08:31:38
File "/usr/share/pyenv/versions/2.7.13/lib/python2.7/site-packages/requests/sessions.py", line 593, in put
STDERR web-s 08:31:38
return self.request('PUT', url, data=data, **kwargs)
STDERR web-s 08:31:38
File "/usr/share/pyenv/versions/2.7.13/lib/python2.7/site-packages/requests/sessions.py", line 533, in request
STDERR web-s 08:31:38
resp = self.send(prep, **send_kwargs)
STDERR web-s 08:31:38
File "/usr/share/pyenv/versions/2.7.13/lib/python2.7/site-packages/requests/sessions.py", line 646, in send
STDERR web-s 08:31:38
r = adapter.send(request, **kwargs)
STDERR web-s 08:31:38
File "/usr/share/pyenv/versions/2.7.13/lib/python2.7/site-packages/requests/adapters.py", line 529, in send
STDERR web-s 08:31:38
raise ReadTimeout(e, request=request)
STDERR web-s 08:31:38
ReadTimeout: HTTPConnectionPool(host='api.leancloud.cn', port=80): Read timed out. (read timeout=15)

数据存储目前对于这种事务性需求没有很好的解决方案。需要在应用层面自行处理,比如保存 B 报错后立刻重试保存,或者回滚对 A 的改动。

谢谢。。。那么。。。好像就非常麻烦了,上万行的服务器端代码,几十上百个云函数,大多都有多处不同时的save/update操作,如果每个地方都需要做异常判断,真是...复杂的很了...

请问有没有包装好的(或者该如何包装)判断一个save/update是否异常,如果异常则重试呢?

没有太好的方案。

如果事务性需求很强烈,也许可以考虑用 MySQL 这样的数据库。
LeanDB 支持 MySQL:https://leancloud.cn/docs/leandb_mysql_guide.html#hash3254818

谢谢回复,请问MySQL为什么就可以规避这样的问题了?

数据存储基于 mongo,相比 mongo,mysql 对事务的支持较好。