我使用Django作为网络服务器,redis作为经纪人
当Django收到请求时,它会启动一个异步任务,这个任务可能花费10个小时,所以我使用了Celery。
我的目标是:一台服务器,称之为服务器1,运行Django(webapp,将任务发送到redis),另一台服务器,称之为server2,运行worker,实际执行该任务。
有人说只需复制服务器2上的所有项目,然后启动一名工作人员。但是网络部分是不必要的。我只想要服务器2上的任务部分。
这是我的Django项目
proj
|
---proj
| |
| ---celery.py
|
---app
|
tasks.py
顺便说一句:你能告诉我如何生成文档架构,真可惜
在tasks.py中,有一个名为do_train()
的函数view.py
class Testcelery(APIView):
def get(self, request, para, format=None):
r = do_train.delay()
print(r.id)
# result = add.delay(4, 4)
# print(result.id)
result = OrderedDict()
result['result'] = r.id
result['code'] = status.HTTP_200_OK
result['message'] = 'success'
return Response(result, status=status.HTTP_200_OK)
所以在redis中发送任务。
我在服务器2上启动了一个工作者,但总是说
KeyError: 'app.tasks.do_train'
服务器2上的纯芹菜项目
proj
|
---celery.py
|
---app
|
tasks.py
答案 0 :(得分:-1)
我相信this answer提供了一个非常好的,深入的解释,说明你将如何做到这一点。我建议你只需咬住子弹并在两台机器上都有源代码,你只需在settings.py文件中正确配置Redis设置即可。但是,当你要求帮助生成文档架构时,我不确定。