タスクにカウントダウンを追加しようとしていますが、うまくいきません。
これが私が使用しているコードです
@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)
完全なセロリのログから取得。
何か案は?
編集
カウントダウンで簡単な例をテストするとうまくいくようです。セロリの実行方法と組み合わせて問題を引き起こすのは、プロジェクトのレイアウトだと思います。
だから私のレイアウトはこのようなものです
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 -A app.tasks worker -l info
他のすべてのタスクはこのセットアップで期待どおりに機能しますが、countdown キーワードを追加すると、次のようになります
Task app.tasks.check_st[deffd607-c6d4-41af-882c-e111736888ba] raised exception: TypeError("check_st() got an unexpected keyword argument 'countdown'",)