Django celery 4-ValueError:启动celery worker时,以int()为底数为10的int()的无效文字 [英] Django celery 4 - ValueError: invalid literal for int() with base 10 when start celery worker

查看:87
本文介绍了Django celery 4-ValueError:启动celery worker时,以int()为底数为10的int()的无效文字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已将celery.py配置为其文档,但我将celery broker URL放入了AWS SQS,但无法启动它.当我运行芹菜工人时,我得到ValueError为:

I have configured my celery.py as its documents but I put my celery broker url to AWS SQS but I cannot start it to work. When I run the celery worker, I get the ValueError as:



    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'

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

I've been looking around but seems to have no clue how to fix this. Please help me out with this! Much appreciated!

推荐答案

我遇到了相同的问题,并已解决.

I encountered the same problem, and resolved it.

首先(很有可能)检查您的AWS访问密钥ID或秘密密钥在某处包含"xi/",并且您具有:

First check (it's very likely) that your AWS access key ID or secret key contains 'xi/' somewhere, and that you have:

BROKER_URL = "sqs://%s:%s@" % (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)

如果是这样,那么您的问题出在URL不安全密钥上,而解决方法是:

If so, then your problem is in URL unsafe keys, and the fix is:

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

Note: Use urllib.quote if using Python 2.x

这篇关于Django celery 4-ValueError:启动celery worker时,以int()为底数为10的int()的无效文字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆