gpt4 book ai didi

python-2.7 - celery :错误:无法识别的参数:-A,Flask,argparse

转载 作者:行者123 更新时间:2023-12-03 16:03:04 25 4
gpt4 key购买 nike

在基于 Flask 的 Web 应用程序中,采用两个命令行参数 ini 文件名,使用 argparse 的端口号,在同一文件中也定义了 celery 应用程序。但是在运行 celery 应用程序时出现上述错误。

import argparse
from flask import Flask
from celery import Celery

app = Flask(__name__)
parser = argparse.ArgumentParser(prog="testpgm")
parser.add_argument('-c','--cfgfile', default='domain.ini', help="provide ini file path")
parser.add_argument('-p','--port', default=5000, help="-p port number eg - 'python run.py -p <port>, default to 5000")
args = parser.parse_args()
ini_path = args.cfgfile
port = args.port

-------- celery 配置--------

app.config["CELERY_QUEUES"] = (
Queue('queue1', Exchange('queue1'), routing_key='queue1')
)
def make_celery(flaskapp):

#getting celery broker uri
celery_broker_uri= CeleryBrokerWrapper().get_broker_uri(broker,username,password,host,port,vhost)

celeryinit = Celery(flaskapp.import_name, broker=celery_broker_uri)
celeryinit.conf.update(flaskapp.config)
taskbase = celeryinit.Task

class ContextTask(taskbase):
abstract = True

def __call__(self, *args, **kwargs):
with app.app_context():
return taskbase.__call__(self, *args, **kwargs)

celeryinit.Task = ContextTask
return celeryinit

celery = make_celery(app)

但是当我运行 celery 时使用

celery -A testpgm.celery worker --loglevel=info --concurrency=5 -Q queue1

我收到类似这样的错误

testpgm: error: unrecognized arguments: -A testpgm.celery worker --loglevel=info --concurrency=5 -Q queue1

它看起来像一个 argparse 错误,我如何为我的应用程序自定义 argparse,而不会对 celery 的命令行参数产生问题..

最佳答案

有一个类似的问题,argparse 也为我提示。

快速修复:使用 parse_known_args,而不是 parse_args

args,未知 = parser.parse_known_args()

来源: Python argparse ignore unrecognised arguments

丑陋的修复:将 celery worker args 定义为您的主应用程序具有的 argparse 的一部分

“做对”修复:考虑在你的 main 函数中使用 argparse,这样 celery 就不会与之冲突

Handling argparse conflicts

关于python-2.7 - celery :错误:无法识别的参数:-A,Flask,argparse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32522912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com