当前位置: 首页 > 面试题库 >

使用Celery+ Redis的巨大延迟

琴俊人
2023-03-14
问题内容

我正在测试Django + Celery,您好是世界示例。使用RabbitMQcelery可以正常工作,但是当我切换到Redis经纪人/结果时,我得到以下信息:

%timeit add.delay(1,2).get()
1 loops, best of 3: 503 ms per loop

settings.py

CELERY_RESULT_BACKEND = "redis"
BROKER_URL = 'redis://localhost:6379'

task.py

@task()
def add(x, y):
    return x + y

上面的测试中有什么问题吗?


问题答案:

我发现解决方案是源代码:http
:
//docs.celeryproject.org/en/latest/_modules/celery/result.html#AsyncResult.get

interval –重试检索结果之前等待的时间(以秒为单位)。请注意,这在使用amqp结果存储后端时不起作用,因为它不使用轮询

默认情况下为0.5秒。您可以手动更改它,但不建议使用此方法来运行任务:

%timeit add.delay(1,2).get(interval=0.001)
100 loops, best of 3: 3.92 ms per loop


 类似资料:
  • 我的地图中存储了3个对象——每个都有几个MB。它们不会改变,所以在节点本地缓存它们是有意义的。这就是我在意识到平均获取延迟很大之前所做的,这大大减慢了我的计算速度。请看hazelcast控制台: 这让我想知道它是从哪里来的。我认为最初发生的是90和48次失误吗?这些计算是并行运行的,所以我认为它们都可以在条目被缓存之前发出一个reguest来获取,因此所有这些都不会从近缓存中受益。那么它是某种预加

  • Docker Flask Celery Redis A basic Docker Compose template for orchestrating a Flask application & a Celery queue with Redis Installation git clone https://github.com/mattkohl/docker-flask-celery-redis

  • 问题内容: 我正在使用该工具观察Redis服务器的延迟。这是一个例子: 问题是,这些值实际上意味着什么?我正在努力寻找有关此工具的文档,而该文档无法通过该工具自己的帮助文档获得。 问题答案: 该命令是一个工具,可以帮助您解决和了解Redis可能遇到的延迟问题。通过测量Redis服务器响应Redis PING命令的时间(以毫秒为单位)来实现。 在这种情况下,延迟是客户端发出命令的时间与客户端收到对命

  • 问题内容: 为了在Web上实时传输数据,我计划使用Redis作为我的Cache数据层,其中数据是瞬时的。Celery是队列管理器,RabbitMQ是从Redis排队进入Tornado层的代理。然后,该层通过websockets流到前端。 我从未在网上找到Redis + RabbitMQ组合。有人可以为它提供可靠的解决方案指南。问题是这样的整合是否可能和明智的? 问题答案: 我现在非常成功地一起使用

  • 问题内容: 有什么技巧可以基于Redis延迟任务执行(即计划)? 也许一些聪明的方法可以将BLPOP延迟给定的秒数? 问题答案: 您可以使用名称中带有时间成分的多个LIST环。作为时间成分,您可以采用当前秒(0-59)。 您总是将任务添加到当前秒的列表中。要获得作业,请仅在保证内容早于给定秒数的那些列表上执行BLPOP(低超时)。 如果您在多个主机上工作,则必须注意时钟是同步的(NTP)。

  • 为了在巨大的xml文件中执行XPATH查询,我阅读了许多喜欢VTD-xml的文章,因此我复制了这些文章中的代码: 但当我运行它时没有结果,所以这意味着XML文件没有映射到内存中。。。我的问题是如何在VTD-xml中强制映射xml文件?