V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  akmonde  ›  全部回复第 4 页 / 共 9 页
回复总数  168
1  2  3  4  5  6  7  8  9  
@wwqgtxx
@skinny
最后還是選了把需要包含的庫,寫進一個單獨的文件,然後再直接在所有插件的頭部插入 import....真香,居然還是用了老辦法...
最後還遇到個坑,workflow 的 chord 等等,win 下不支持的( celery v3.x ),排錯花了老半天。
2018-08-30 08:14:19 +08:00
回复了 nilrust 创建的主题 VPS 有没有特别便宜的服务器?
@xzc0001 @xd314697475 请问大佬们,速度如何,值得上车么?
@skinny
@wwqgtxx
讲真那些插件代码应该没问题,github 上搜罗的,不算是我的锅...
我想了想,可能是因为使用了 celery 的 subtask 调用的插件,才造成不能共享库的作用域,直接调用插件的话库本来可以共享作用域的。

@baojiweicn2 emmmm,查了下,好像这条是 celery 任务自动运行所有已注册的 app 吧。我那边呢,是需要动态导入一批未知名的模块,然后再将它们注册成 celery app 再运行,估计这法子可能不大合适。
@skinny emmmm,原谅我有点笨,我看过那两段代码,您也写的蛮清晰的。不过这个为啥能让我那边入口函数的库能够被子模块继承,这点我没太懂...
@yufpga 明儿再看看,我白天就是没有找到问题根源,也就是关于 celery subtask 调用插件带来的库不继承问题。
@wwqgtxx 这法子估计能行,不过插件多了以后估计会比较慢,我明儿看看。实在不行只能批量加在插件头部,或者这样弄了。
@firejoke 兄 dei,讲真你这写的不错的。不过好像跟我需求不太一样啊。我不是只找动态映射啊,是库继承不了的问题。
@skinny 谢谢指教,不过看起来好像问题复杂化了,貌似是换了两种 import 方式么。
弱弱问句,这个能让我这边调用的插件,继承我入口文件的已经加载的库么...
主要没看到特别的说明和参数表示能做到这点...
@baojiweicn2
@xuboying
两位的意思是 importlib 有个设置 globals 和 locals 的选项么?如果是的话可能有点尴尬,这特性好像是 3.x 引入的,我这边是 2.7,似乎没有这两个扩展选项。
见:
```
https://docs.python.org/2.7/library/importlib.html
```
@owenliang 还是非常感谢,不过我这边 plugin 太多了,都去注册一下某个库文件不太现实。
@owenliang 感谢回复,另外简单表述下,比如存在 plugins/util.py 文件,本来这文件可能本身没有 import sys 或者其他第三方库,我想办法需要在 main.py 里面,把 import sys,赋给 plugins/util.py [可能有很多 plugins,都需要赋给] ,然后保证在调用 plugins/util.py 时候不会出错。
@wwqgtxx 以前这么做过,感觉有点傻..这边有几千个文件,每个都加,就算是批量也感觉有点难看。
2018-08-27 09:14:30 +08:00
回复了 akmonde 创建的主题 Python celery 多节点是否适合代替多线程(线程池)
@pekingzcc @monsterxx03
非常感谢两位,此前没有去仔细看 chord,光在这上面纠结了,很惭愧,现在应该能解决原来的问题了。
另外,参考了这篇文章:
```
https://blog.csdn.net/preyta/article/details/54313047
```
----------------
我想问问两位:
----------------
如果仍延续原来每个 task 里面,多线程跑多个脚本(或者循环之类的)。在每个 task 里面,再使用这篇文章里讲的 chunks - 将大量任务分解为小块任务,会不会加快速速度。
我知道每个 worker 可以同时跑多个 task,这个以前试过,只是有点好奇这样是否也可行。
2018-08-27 08:53:28 +08:00
回复了 akmonde 创建的主题 Python celery 多节点是否适合代替多线程(线程池)
@monsterxx03 前两天没看到您最后的回复,我自己看了下还是有点迷糊。您的意思是每个 task 里面是单独包含一个脚本么,然后再在配置好的 result backend 里面,通过异步标记然后最后通过标记汇总结果么,查了下好像没有合适的参考资料。

参考了下几篇文章,比如这篇,就是通过 id 查询的:
```
https://www.cnblogs.com/piperck/p/5391128.html
```

至于您此前说的,```入口处只负责分发 task,就能在入口处汇总所有数据```,我不太清楚您是否指的是每个 task 只运行一个脚本,然后再在入口处聚合。如果是这样的话,难道是拿到结果后手工聚合?
因为我看了下您这里举的例子,似乎只是 get 单个任务的结果,:
```
ret = task.delay()
ret.get()

```
因为我执行完这一批 task 需要有个信号,如果不是的话,您原本的意思是每个 task 会有多个脚本,然后还要用到多线程聚合后再返回该 task 以结果么?

鄙人比较笨,再次 v 币感谢下,希望能最后给予下解答,谢谢!
2018-08-22 16:20:04 +08:00
回复了 akmonde 创建的主题 Python celery 多节点是否适合代替多线程(线程池)
@monsterxx03 大概了解了,我那边 module 的意思是,主程入口有多个函数,每个函数算是一个 module,会分别对一批脚本进行调用,也就是您说的 task 分发入口吧,以前做的都是只 task 分发这里的 module,然后每个 task 里面多线程跑脚本。
不过这样的话,节点不够多的话 效果不一定比多线程强,因为多线程 20-30 稀松平常,如果两三台机器每个跑五六个节点好像还算正常?这样算下来,估计机器少的话,效果估计一般。
PS:忘了每个节点是不是可以跑同时多个 task,我记得貌似可以。
2018-08-22 13:48:33 +08:00
回复了 akmonde 创建的主题 Python celery 多节点是否适合代替多线程(线程池)
@monsterxx03 大佬的意思是用多线程分发 module,然后 celery worker 节点去实现多脚本任务?然后用标识去定位 get 每个 module 的所有结果?不知道我理解是否有误?
2018-08-22 13:38:27 +08:00
回复了 akmonde 创建的主题 Python celery 多节点是否适合代替多线程(线程池)
@pekingzcc 最后玩计数嘛?嗯嗯,我想想怎么解决获得整个 module 都完成的信号问题。
2018-08-22 12:34:55 +08:00
回复了 wswuai 创建的主题 推广 2808 Proxy —— 企业级代理服务内测激活码发放,每天 10 名额
没有用法 demo 么..比如连某个端口?我只看到了给了个 IP
2018-08-12 16:02:38 +08:00
回复了 59php 创建的主题 云计算 怎么看待 virmach 家 5 刀每年的 128M 的小鸡
@tadtung 明白,不过确实这几家贼 tm 贵。
1  2  3  4  5  6  7  8  9  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1133 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 18ms · UTC 23:41 · PVG 07:41 · LAX 15:41 · JFK 18:41
Developed with CodeLauncher
♥ Do have faith in what you're doing.