不能将Dash应用程序背景回调添加到Celery中运行。
创始人
2024-12-27 04:30:04
0

问题的原因是Celery默认使用pickle序列化任务函数,而Dash应用程序中的回调函数通常不能使用pickle序列化。这可能会导致Celery无法找到完整的函数对象并因此无法执行任务。

为了解决这个问题,可以指定Celery使用其他的序列化程序,比如json。以下是一个示例代码,展示了如何在Celery中使用json序列化来解决这个问题:

from celery import Celery
from celery.signals import worker_process_init, worker_process_shutdown

from dash.dependencies import Input, Output
import dash_html_components as html
import dash


app = dash.Dash(__name__)
server = app.server


@worker_process_init.connect
def init_worker(**kwargs):
    global app
    app = dash.Dash(__name__)
    server = app.server


@worker_process_shutdown.connect
def shutdown_worker(**kwargs):
    global app
    app = None


app.layout = html.Div(
    [
        html.Button("Submit", id="submit-button"),
        html.P(id="output")
    ]
)


@app.callback(Output("output", "children"), [Input("submit-button", "n_clicks")])
def update_output(n_clicks):
    return f"Button clicked {n_clicks} times."


celery = Celery(__name__, broker="redis://localhost:6379/0", backend="redis://localhost:6379/0", task_serializer="json")


@celery.task
def run_dash_app():
    app.run_server(debug=False, mode="external")


if __name__ == "__main__":
    run_dash_app.delay()

在上面的例子中,我们使用 worker_process_initworker_process_shutdown 信号来初始化和关闭Dash app,这样就可以确保所有Celery任务都在同一个进程中运行。然后,在Celery任务函数中,我们指定使用json序列化。

使用这种方法可以确保我们可以将Dash应用程序的背景回调添加到Celery任务队列中,并且可以顺利地运行。

相关内容

热门资讯

一分钟辅助挂!哥哥打大a辅助(... 一分钟辅助挂!哥哥打大a辅助(透视)中至赣州黑科技辅助软件视频(详细透视外开挂教程)1、超多福利:超...
十分钟辅助挂!桂林老k字字牌辅... 十分钟辅助挂!桂林老k字字牌辅助(透视)手机字牌辅助脚本工具(详细透视外开挂教程)1、构建自己的微扑...
9分钟辅助挂!友友邳州辅助软件... 9分钟辅助挂!友友邳州辅助软件下载(透视)潮汕汇辅助神器(详细透视外开挂教程)是一款可以让一直输的玩...
五分钟辅助挂!凑一桌游戏辅助(... 1、五分钟辅助挂!凑一桌游戏辅助(透视)微友辅助神器下载(详细透视外开挂教程)。2、微友辅助神器下载...
第8分钟辅助挂!呗兔辅助器(透... 第8分钟辅助挂!呗兔辅助器(透视)小闲川南手游辅助器(详细透视外开挂教程)1)小闲川南手游辅助器辅助...
九分钟辅助挂!浙江宝宝游戏万能... 1、九分钟辅助挂!浙江宝宝游戏万能辅助器(透视)心悦踢坑神器软件下载(详细透视外开挂教程);代表性(...
第1分钟辅助挂!宜宾小闲辅助(... 第1分钟辅助挂!宜宾小闲辅助(透视)微友辅助器免费版v2.0(详细透视外开挂教程)1、每个玩家都可以...
八分钟辅助挂!微信开发辅助工具... 八分钟辅助挂!微信开发辅助工具(透视)山西扣点带你辅助工具破解(详细透视外开挂教程)是一款可以让一直...
第三分钟辅助挂!微信小程序微乐... 第三分钟辅助挂!微信小程序微乐辅助器(透视)榕城510k有没有挂(详细透视外开挂教程)1、每一步都需...
五分钟辅助挂!老友记辅助器(透... 五分钟辅助挂!老友记辅助器(透视)广西友乐app辅助工具(详细透视外开挂教程)1、超多福利:超高返利...