在Redis列表中删除过期的项目

时间:2018-07-26 06:34:16

标签: redis celery

我有一个名为test的函数,用于处理名为test的队列中的任务:

@celery_app.task(
    queue='test',
    ignore_result=True,
    base=BasePostCrawlerTaskClass)
def priority_test(priority):
    print(priority)

我添加一个带有expires参数的任务,如下所示:

priority_test.apply_async(args=(10,), queue="test", expires=10)

当我运行redis-cli并获得队列项目时:

127.0.0.1:6379> LINDEX test 0
"{...\"headers\": {\"expires\": \"2018-07-26T06:00:10.928428+00:00\", \"id\": \"843a1c8e-2da0-4eee-b9bd-dc60fa323b38\", ...}"

但是10秒钟后任务仍然在队列中。 我的服务器时间设置为另一个时区而不是UTC。 另外,我将DateTime作为expires参数与当前时区进行测试,如下所示:

priority_test.apply_async(args=(20,), queue="test", expires=datetime.datetime.now() + datetime.timedelta(seconds=20))

但仍在20秒后。任务在排队。 我想设置expires参数,以便任务脱离列表以减小列表大小。

0 个答案:

没有答案