可不可以把 Celery 的应用写在不同的文件里?

2015-07-12 17:09:46 +08:00
 tdifg

搜了一阵,发现现在网上的例子里都是在一个文件里写完所有可能要执行的任务,上面注册上celery的task。
但是,我想写一个插件式的程序,它会动态搜出插件(在一个目录下,不同的文件里)里的指定函数并执行。插件结构是:
proj
--plugins
----xx.py
----yy.py
--mycelery.py
--controller.py
所有插件都会使用mycelery.py里的app来注册task。在控制器里动态导入插件,然后执行指定函数。
可以这样写吗?或者哪里有什么使用案例,看了一天英文,还没怎么看懂……

3057 次点击
所在节点    Python
5 条回复
neoblackcap
2015-07-13 11:34:04 +08:00
当然是可以的,只要你去配置好celery就可以了,让它启动的时候能去对应的目录载入函数。
tdifg
2015-07-13 12:15:21 +08:00
@neoblackcap 就是那个include参数吗?尝试过一次,但总是报各种import找不到路径的错。主要是搞不清楚这里路径相对关系。
tdifg
2015-07-13 14:43:38 +08:00
发现这个网址
http://stackoverflow.com/questions/20905462/python-django-celery-project-structure
这里说的Is it possible that Django project uses the non-django celery project for all celery tasks.
情况很相近
neoblackcap
2015-07-13 15:49:05 +08:00
@tdifg 对,然后该路径使用绝对路径就好了
tdifg
2015-07-14 09:19:38 +08:00
@neoblackcap 的确,但是task修饰的函数里import其他目录库的路径和你启动celery worker的路径还是相关的(相对路径),所以调好了位置后就不敢动了。
这句话好绕……

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

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

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

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

© 2021 V2EX