首页 文章

Django芹菜4 - ValueError:当启动芹菜 Worker 时,int()的基数为10的文字无效

提问于
浏览
1

我已将celery.py配置为其文档但我将我的芹菜代理URL添加到AWS SQS但我无法启动它 . 当我运行芹菜工作者时,我得到ValueError:

File "/Users/abd/Desktop/proj-aws/lib/python3.6/site-packages/celery/bin/base.py", line 244, in __call__
      ret = self.run(*args, **kwargs)
    File "/Users/abd/Desktop/proj-aws/lib/python3.6/site-packages/celery/bin/worker.py", line 255, in run
      **kwargs)
    File "/Users/abd/Desktop/proj-aws/lib/python3.6/site-packages/celery/worker/worker.py", line 99, in __init__
      self.setup_instance(**self.prepare_args(**kwargs))
    File "/Users/abd/Desktop/proj-aws/lib/python3.6/site-packages/celery/worker/worker.py", line 120, in setup_instance
      self._conninfo = self.app.connection_for_read()
    File "/Users/abd/Desktop/proj-aws/lib/python3.6/site-packages/celery/app/base.py", line 752, in connection_for_read
      return self._connection(url or self.conf.broker_read_url, **kwargs)
    File "/Users/abd/Desktop/proj-aws/lib/python3.6/site-packages/celery/app/base.py", line 828, in _connection
      'broker_connection_timeout', connect_timeout
    File "/Users/abd/Desktop/proj-aws/lib/python3.6/site-packages/kombu/connection.py", line 181, in __init__
      url_params = parse_url(hostname)
    File "/Users/abd/Desktop/proj-aws/lib/python3.6/site-packages/kombu/utils/url.py", line 34, in parse_url
      scheme, host, port, user, password, path, query = _parse_url(url)
    File "/Users/abd/Desktop/proj-aws/lib/python3.6/site-packages/kombu/utils/url.py", line 52, in url_to_parts
      parts.port,
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/parse.py", line 167, in port
      port = int(port, 10)
    ValueError: invalid literal for int() with base 10: 'xi'

我一直在环顾四周,但似乎不知道如何解决这个问题 . 这个你能帮我吗!非常感激!

1 回答

  • 0

    我遇到了同样的问题,并解决了它 .

    首先检查(很可能)您的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

相关问题