httpハンドラで、userid
を取得または定義します。それを引数としてタスクに渡します。 redisを使用して統計を保存します。
class CallbackTask(Task):
def on_success(self, retval, task_id, args, kwargs):
db = redis.StrictRedis(host, port)
db.incr("succeed.tasks.user{userid}".format(**kwargs))
# note: explicitly pass kwargs when schedule the task
# regular_task.apply_async(kwargs=dict(userid=self.get_user))
def on_failure(self, exc, task_id, args, **kwargs, einfo):
db = redis.StrictRedis(host, port)
db.incr("failed.tasks.user{userid}".format(kwargs))
@app.task(base=CallbackTask)
def regular_task(foo, bar, userid):
# do things
あなたが必要と統計データを取得:
def get_succeed_tasks(db, userid):
return db.get("succeed.tasks.user{userid}".format(userid=userid))
グレート!お返事をありがとうございます。私は、同じ永続的な要求からパッケージにすべての要求を収集することによってユーザーデータを格納せずにそれを行う方法があるかどうか疑問に思っていましたが、それがどのように動作するのか理解できません。ユーザーデータを保存するのが最善の方法です。 – StackyStack
"見るか、追跡する"とはどういう意味ですか? 'セロリの検査 'のようなものでターミナルで見るか、ウェブページのように表示する必要がありますか? –
私の目標は、ページに行くときに2つのメッセージの1つを受け取るという、URLに一意の識別子を要求する各ユーザーに提供することです。 「あなたの仕事のすべてが完了しました」または「あなたの仕事はまだ働いています」 – StackyStack