Python flask web 开发,大数据量计算并导出文件,如何解决超时问题?

2017-01-12 12:02:05 +08:00
 alvy
6336 次点击
所在节点    Python
46 条回复
maemo
2017-01-12 18:41:04 +08:00
@alvy 在这里 http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html#redis

Redis is also feature-complete, but is more susceptible to data loss in the event of abrupt termination or power failures.
ipconfiger
2017-01-12 18:42:14 +08:00
改 bug 去
spice630
2017-01-12 21:24:31 +08:00
压力大就加机器啊。你也没说清楚是计算压力大还是带宽有瓶颈
推荐你用 golang ,也许就不会有修不完的问题了。 python 的第三方库有多少人维护你都不知道, bug 提给谁 会不会有人修你也不知道,这种情况用在生产环境就是 灾难。
spice630
2017-01-12 21:27:03 +08:00
另外 我们写 python 的同事今天刚刚放弃 flask ,程序崩溃找不到原因。
eyp82
2017-01-12 23:38:41 +08:00
@alvy 这个出处就是 Celery 的官方文档, 确实说 Redis 有可能丢数据.
coolair
2017-01-12 23:46:25 +08:00
第三方库 bug 修的很慢,半年以上是常有的事,修了要进 pip 又得好久,然后,好多库你都维护了一个自己的版本,累。
iamfredng
2017-01-13 01:08:33 +08:00
我只想说你干嘛不开个线程?丢后面慢慢做,好了之后再回写一下结果?
alvy
2017-01-13 09:47:03 +08:00
@spice630 我也打算学 golang 来着。生产环境现在就是用的 python flask ,一时半会也改不了。
alvy
2017-01-13 09:49:38 +08:00
@iamfredng 啊,这个思路好,我研究下
alvy
2017-01-13 09:50:47 +08:00
@maemo 我先把不同的服务器配置到不同的 redis 库,再不行我就换 rabbitmq 试试
wellsc
2017-01-13 12:43:16 +08:00
@spice630 那是你同事个人水平原因。。
julyclyde
2017-01-13 13:47:58 +08:00
@eyp82 celery 里哪句写了 redis 会丢?
julyclyde
2017-01-13 13:48:15 +08:00
@spice630 那是你同事个人水平原因。。
spice630
2017-01-13 14:10:10 +08:00
@wellsc
所以说 python 麻烦啊
wellsc
2017-01-13 14:20:59 +08:00
@spice630 又见神论。(你同事放弃 flask ) -> ( Python 麻烦)。这不严谨
eyp82
2017-01-13 23:56:06 +08:00
@julyclyde http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html

Redis is also feature-complete, but is more susceptible to data loss in the event of abrupt termination or power failures. Detailed information about using Redis:

只是说断点或者异常终止的情况下**有可能**会丢数据, 应该是 Redis 轻量化设计的外沿就到这了. 正常运行的时候应该不至于老丢数据, 否则就是大 bug 那还了得.
eyp82
2017-01-13 23:57:27 +08:00
楼上有说 Python 第三方库有问题然后转 golang 的, 按我的理解 golang 的第三方库也会有类似的问题啊? 还是说 golang 第三方库审核很严格, 长时间不更新就给踢出去, 所以能留下的都是精品?
skywatcher
2017-01-14 01:15:48 +08:00
既然慢就异步,感觉 celery+redis 应该是能解决你的问题。第一个 check 会不会是你的 redis 被另一个调用方清理了,然后记得详细打印日志,很有可能是 celery 任务里执行失败了。我们整个公司的应用发布任务都在 celery+redis 里,没发现你说的问题。
iamfredng
2017-01-14 16:17:51 +08:00
@alvy 我有个游戏客户端编译系统就是在 Flask 上开发的。编译个客户端轻则 10 分钟以上,也是开个线程后面慢慢编译,好了通知一下 Flask 完成。 web 就 js 轮询结果即可
alvy
2017-01-15 21:15:13 +08:00
@skywatcher 求教,多台 web 服务器的 celery 公用有个 redis 的数据库可以吗? celery 启用几个 worker 合适?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/334086

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX