Celery 倒计时错误
我正在尝试给一个任务添加倒计时,但一直没有成功。
这是我正在使用的代码:
@celery.task
def check_st(key, t):
device = Device.query.filter(Device.key == key).first()
data = Data.query.filter(Data.dev_id == device.id).order_by(Data.timestamp.desc()).first()
if(data.timestamp == t):
return True
我这样调用它:
check_st.apply_async([key, data.timestamp], countdown=300)
以上内容摘自完整的 celery 日志。
有没有什么想法?
编辑
我测试了一个简单的倒计时示例,似乎运行得很好。我想可能是我的项目结构导致了问题,加上我运行 celery 的方式。
我的项目结构是这样的:
proj(app(__init__.py
, views.py
, models.py
, tasks.py
))
在我的 tasks.py 中,我这样导入模块:
from app.models import Device, Data
然后在我的 views.py 中,我用以下方式导入任务:
from app.tasks import check_st
我在 proj/
目录下这样运行 celery:
celery -A app.tasks worker -l info
在这个设置下,其他所有任务都按预期工作,但当我添加倒计时关键字时,我得到了以下结果:
Task app.tasks.check_st[deffd607-c6d4-41af-882c-e111736888ba] raised exception: TypeError("check_st() got an unexpected keyword argument 'countdown'",)
1 个回答
1
问题终于解决了。解决办法是把
celery -A app.tasks worker -l info
改成
celery --workdir=proj/ -A app.tasks worker -l info