hello.py
# coding=utf-8
import time
from manage import app
from celery.contrib.methods import task_method
class HelloService(object):
@app.task(filter=task_method)
def say(self):
time.sleep(4)
print('hello!')
world.py
# coding=utf-8
import time
from celery.contrib.methods import task_method
from manage import app
class WorldService(object):
@app.task(filter=task_method)
def say(self):
time.sleep(4)
print('hello')
run.py
# coding=utf-8
from hello import HelloService
from world import WorldService
if __name__ == '__main__':
HelloService().say.delay()
WorldService().say.delay()
print('process done')
使用
celery worker -A hello --loglevel=INFO -n hello
celery worker -A world --loglevel=INFO -n world
分别启动两个 woker
执行 run.py
结果在 hello 的 worker 里报错 DecodeError: No module named world
而再 world 的 worker 里报错 DecodeError: No module named hello
尝试在 run.py 中只保留一个 service 的调用,注释另一个的 import.则不会出现此错误
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.