You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Railway部署的Flask应用中Celery[Redis]任务始终处于Pending状态的问题求助

Railway部署的Flask应用中Celery[Redis]任务始终处于Pending状态的问题求助

大家好,我在Railway上部署了一个Flask API,尝试用Celery实现后台异步任务,但碰到了个棘手的问题:虽然能打印出任务后端和task id,但任务状态一直是PENDING,而且感觉每次部署下来只会创建一个任务。下面是我的具体实现细节,恳请各位帮忙排查下问题!

1. Celery初始化配置(工具类部分)

"""
Utils
"""
from celery import Celery

def make_celery(app):
    """
    Make celery
    """
    celery = Celery(app.import_name)
    celery.conf.update(app.config["CELERY_CONFIG"])
    celery.conf.update(
        task_serializer='json',
        result_serializer='json',
        accept_content=['json'],
        timezone='UTC')

    class ContextTask(celery.Task):
        """
        Context task
        """
        def __call__(self, *args, **kwargs):
            with app.app_context():
                return self.run(*args, **kwargs)

    celery.Task = ContextTask
    return celery

2. Celery任务定义(tasks.py)

"""
path: tasks.py

Celery tasks.
"""
import pandas as pd
from celery import shared_task
from celery.contrib.abortable import AbortableTask
from facebook_business.adobjects.adsinsights import AdsInsights
from facebook_business.adobjects.adaccount import AdAccount

@shared_task(bind=True, base=AbortableTask)
def fetch_insights_task(self, account_id):
    """
    Get insights from Facebook Ads API.
    """
    params = {
        'level': 'campaign',
        'date_preset': 'yesterday',
        'time_increment': 1,
        'breakdowns': ['gender', 'age'],
    }
    # 省略后续Facebook API调用及数据处理逻辑...
    return insights

3. Flask视图中的任务调用(views.py)

@main.route('/insights')
def get_insights():
    """
    Insights page
    """
    if 'account_id' not in session:
        return redirect('/select_account')

    task_id = session.get('insights_task_id')
    task = fetch_insights_task.AsyncResult(task_id) if task_id else None
    # 省略后续页面渲染或任务状态返回逻辑...

4. Worker启动命令

我使用这条命令启动Celery Worker:

celery -A run:celery worker --loglevel=debug -P solo

问题现象与预期

  • 预期:提交的任务能正常执行并完成,状态会从PENDING变为SUCCESS或对应状态
  • 实际:所有任务的状态一直停留在PENDING,且每次部署后似乎只有第一个任务会被创建,后续任务无响应

备注:内容来源于stack exchange,提问作者concaption

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 10:34:40