- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经使用 Celery 一段时间了,在生产环境中,我使用 RabbitMQ 作为代理,使用 Redis 作为 K8s 集群中的后端,到目前为止没有任何问题。在本地,我运行一个包含一些服务(Flask API、2 个不同的 Worker、Beat、Redis、Flower、Hasura)的 docker compose,同时使用 Redis 作为代理和后端。
在过去的几个月里我没有遇到此设置的问题,但昨天我在访问任务结果时开始出现不稳定的行为。
任务被发送到队列,工作人员识别它并执行任务,但在查询任务状态时,我有时会得到 DisabledBackend
。通常在第一次请求时,然后它就可以工作。无法找到何时有效、何时无效的模式,这是不稳定的。
我在某处读到 Celery 在 Flask 的内置服务器上工作得不是很好,所以我切换到 uWSGI,其设置与我在生产环境中的设置几乎相同:
[uwsgi]
wsgi-file = app/uwsgi.py
callable = application
http = :8080
processes = 4
threads = 2
master = true
chmod-socket = 660
vacuum = true
die-on-term = true
buffer-size = 32768
enable-threads = true
req-logger = python:uwsgi
我见过 similar question在 Django 中,问题似乎出在 Apache 的 WSGI Mod 上,这不是我的情况,但行为似乎相似。我见过的所有其他问题都与后端的错误配置有关,但我的情况并非如此。
关于可能导致此问题的任何想法?谢谢。
最佳答案
所以我似乎只需要通过我的 Celery 应用程序实例访问 AsyncResult
,而不是通过 Celery,或者将 Celery 应用程序实例作为参数传递。
所以,这是行不通的:
from celery.result import AsyncResult
@app.route('/status/<task_id>')
def get_status(task_id):
task = AsyncResult(task_id)
return task.state
这个有效:
from app import my_celery # Your own Celery Application Instance
@app.route('/status/<task_id>')
def get_status(task_id):
task = my_celery.AsyncResult(task_id)
return task.state
这也有效:
from app import my_celery
from celery.result import AsyncResult
@app.route('/status/<task_id>')
def get_status(task_id):
task = AsyncResult(task_id, app=my_celery)
return task.state
我猜发生的事情是,通过直接从 Celery 调用 AsyncResult
,它不会访问 Celery 的配置,因此它认为没有配置后端来查询结果。
但这只能解释函数的完全失败,而不是不稳定的行为。我猜这是因为不同的线程,以及应用程序实例很重要的情况,所以 Celery 找到了它,但不太确定。
我已经运行了几个测试,并且在更改导入的 AsyncResult
后似乎再次正常工作,但我会继续挖掘。
关于docker - DisabledBackend : Erratic Behavior with Celery, Redis & Flask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68865144/
我们将 Rebus 与 MSMQ 一起用于应用程序组件之间基于消息的通信。这些组件都在同一台机器上运行。 消息发送和接收之间的时间通常保持在一秒以下。但是如果系统空闲一分钟左右(意味着没有消息被发送)
我们将 Rebus 与 MSMQ 一起用于应用程序组件之间基于消息的通信。这些组件都在同一台机器上运行。 消息发送和接收之间的时间通常保持在一秒以下。但是如果系统空闲一分钟左右(意味着没有消息被发送)
我正在尝试使用 Flask 在 AWS EC2 实例上部署机器学习模型。这些是使用 joblib 腌制的 sklearn 拟合的随机森林模型。当我在本地主机上托管 Flask 并将它们加载到内存中时,
我已经使用 Celery 一段时间了,在生产环境中,我使用 RabbitMQ 作为代理,使用 Redis 作为 K8s 集群中的后端,到目前为止没有任何问题。在本地,我运行一个包含一些服务(Flask
我有一个主 div,里面有三个 div。它们都被赋予了 30% 的宽度,并且它们都在主 div 中居中。 我使用了 display: inline-block;这样三个 div 就会出现在彼此旁边,但
我正在尝试使用带有定时问题的 javascript 进行简单的测验。每个问题持续 10 秒,然后再继续下一个问题。倒数计时器对第一个问题表现良好,之后它开始加速或显示后续问题的随机数。这是我的代码,附
尝试使用 JavaMail 库验证 TLS 连接时,我随机收到以下验证错误: javax.mail.MessagingException: Can't send command to SMTP hos
我正在尝试制作某种图片库,其中图片在后台加载,并在加载完成后动态添加到 gridView。图片加载效果很好,但如果 gridView 内的图片超过屏幕高度,gridView 的滚动行为将无法按预期工作
我在 jQuery 和 this little plugin 的帮助下通过一些元素的颜色、背景颜色和边框颜色 css 属性进行颜色循环。 . 我这样做: var currentColor = myRa
我们正在开发的网站上周出现故障,我们不知道发生了什么。以下是问题列表以及我们为解决这些问题所采取的步骤: 在我们的 API 调用中,我们使用 get_field() 和 get_fields() 从中
我是一名优秀的程序员,十分优秀!