搜了一阵,发现现在网上的例子里都是在一个文件里写完所有可能要执行的任务,上面注册上celery的task。
但是,我想写一个插件式的程序,它会动态搜出插件(在一个目录下,不同的文件里)里的指定函数并执行。插件结构是:
proj
--plugins
----xx.py
----yy.py
--mycelery.py
--controller.py
所有插件都会使用mycelery.py里的app来注册task。在控制器里动态导入插件,然后执行指定函数。
可以这样写吗?或者哪里有什么使用案例,看了一天英文,还没怎么看懂……
1
neoblackcap 2015-07-13 11:34:04 +08:00
当然是可以的,只要你去配置好celery就可以了,让它启动的时候能去对应的目录载入函数。
|
2
tdifg OP @neoblackcap 就是那个include参数吗?尝试过一次,但总是报各种import找不到路径的错。主要是搞不清楚这里路径相对关系。
|
3
tdifg OP 发现这个网址
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. 情况很相近 |
4
neoblackcap 2015-07-13 15:49:05 +08:00
@tdifg 对,然后该路径使用绝对路径就好了
|
5
tdifg OP @neoblackcap 的确,但是task修饰的函数里import其他目录库的路径和你启动celery worker的路径还是相关的(相对路径),所以调好了位置后就不敢动了。
这句话好绕…… |