我已将我的 celery.py 配置为其文档,但我将我的芹菜代理网址放在 AWS SQS 上,但我无法启动它的工作。当我运行芹菜工作器时,我得到的值错误为:
文件"/Users/abd/Desktop/proj-aws/lib/python3.6/site-packages/celery/bin/base.py",第 244 行,__call__ ret = self.run(*args, **kwargs) 文件"/Users/abd/Desktop/proj-aws/lib/python3.6/site-packages/celery/bin/worker.py",第 255 行,正在运行 **夸格斯) 文件"/Users/abd/Desktop/proj-aws/lib/python3.6/site-packages/celery/worker/worker.py",第 99 行,__init__ self.setup_instance(**self.prepare_args(**夸格斯)) 文件 "/Users/abd/Desktop/proj-aws/lib/python3.6/site-packages/celery/worker/worker.py",第 120 行,setup_instance self._conninfo = self.app.connection_for_read() 文件"/Users/abd/Desktop/proj-aws/lib/python3.6/site-packages/celery/app/base.py",第 752 行,connection_for_read 返回self._connection(URL 或 self.conf.broker_read_url,**kwargs) 文件 "/Users/abd/Desktop/proj-aws/lib/python3.6/site-packages/celery/app/base.py",第 828 行,_connection "broker_connection_timeout",connect_timeout 文件 "/Users/abd/Desktop/proj-aws/lib/python3.6/site-packages/kombu/connection.py",第 181 行,__init__ url_params = parse_url(主机名) 文件 "/Users/abd/Desktop/proj-aws/lib/python3.6/site-packages/kombu/utils/url.py",第 34 行,parse_url 方案、主机、端口、用户、密码、路径、查询 = _parse_url(URL) 文件 "/Users/abd/Desktop/proj-aws/lib/python3.6/site-packages/kombu/utils/url.py",第 52 行,url_to_parts 零件端口, 文件 "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/parse.py",第 167 行,在端口中 端口 = int(端口,10) ValueError:int() 的文字无效,以 10 为基数:"xi">
我一直在环顾四周,但似乎不知道如何解决这个问题。请帮我解决这个问题!非常感谢!
我遇到了同样的问题,并解决了它。
首先检查(很可能)您的 AWS 访问密钥 ID 或私有密钥是否在某处包含"xi/",并且您有:
BROKER_URL = "sqs://%s:%s@" % (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
如果是这样,那么您的问题出在 URL 不安全的密钥中,解决方法是:
BROKER_URL = 'sqs://{0}:{1}@'.format(
urllib.parse.quote(AWS_ACCESS_KEY_ID, safe=''),
urllib.parse.quote(AWS_SECRET_ACCESS_KEY, safe='')
)
注意:如果使用Python 2.x,请使用urllib.quote