Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用'#';在芹菜django中作为代理url_Django_Url_Celery_Broker - Fatal编程技术网

无法使用'#';在芹菜django中作为代理url

无法使用'#';在芹菜django中作为代理url,django,url,celery,broker,Django,Url,Celery,Broker,我得到这个错误 ValueError:基数为10的int()的文本无效:“传递” 这段代码不起作用,我是python新手,Django有转义序列吗 我试过“u”、“r”、“#”、“#”和“#”,希望它能逃脱,但它没有 app = Celery('myapp', broker='amqp://user:pass#1@localhost:5672//', backend='rpc://', include=['myapp.

我得到这个错误

ValueError:基数为10的int()的文本无效:“传递”

这段代码不起作用,我是python新手,Django有转义序列吗

我试过“u”、“r”、“#”、“#”和“#”,希望它能逃脱,但它没有

app = Celery('myapp',
             broker='amqp://user:pass#1@localhost:5672//',
             backend='rpc://',
             include=['myapp.tasks'])
回溯(最近一次呼叫最后一次):
文件“C:\Program Files(x86)\Microsoft Visual Studio\Shared\Python36\u 64\lib\runpy.py”,第193行,位于作为主模块的运行模块中
“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
文件“C:\Program Files(x86)\Microsoft Visual Studio\Shared\Python36\u 64\lib\runpy.py”,第85行,在运行代码中
exec(代码、运行\全局)
文件“C:\Users\user\source\repos\BtcApi\BtcApi\btcapienv\Scripts\celery.exe \\uuuuu main\uuuuuu.py”,第9行,在
文件“c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site packages\芹菜\\uuuuuu main\uuuuu.py”,第14行,在main中
_main()
文件“c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site packages\celery\bin\celery.py”,主目录第326行
cmd.从命令行(argv)执行命令
文件“c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site packages\celery\bin\celery.py”,第488行,从命令行执行
超级(CeleryCommand,self)。从命令行(argv)执行命令)
文件“c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site packages\cellery\bin\base.py”,第281行,从命令行执行
返回self.handle_argv(self.prog_名称,argv[1:])
文件“c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site packages\celery\bin\celery.py”,第480行,在handle\u argv中
返回self.execute(命令,argv)
文件“c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site packages\celery\bin\celery.py”,执行中第412行
).run_from_argv(self.prog_name,argv[1:],command=argv[0])
文件“c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site packages\cellery\bin\worker.py”,第221行,从\u argv运行
返回自我(*参数,**选项)
文件“c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site packages\cellery\bin\base.py”,第244行,在调用中__
ret=self.run(*args,**kwargs)
文件“c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site packages\cellery\bin\worker.py”,第255行,正在运行
**kwargs)
文件“c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site packages\cellery\worker\worker.py”,第99行,在uu init中__
self.setup_实例(**self.prepare_参数(**kwargs))
文件“c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site packages\cellery\worker\worker.py”,第120行,在安装程序实例中
self.\u conninfo=self.app.connection\u for\u read()
文件“c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site packages\cellery\app\base.py”,第752行,连接\u以供读取
返回self.\u连接(url或self.conf.broker\u read\u url,**kwargs)
文件“c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site packages\cellery\app\base.py”,第828行,在-U连接中
“代理连接超时”,连接超时
文件“c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site packages\kombu\connection.py”,第181行,在uu init中__
url_params=解析_url(主机名)
解析url中的文件“c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site packages\kombu\utils\url.py”第34行
方案、主机、端口、用户、密码、路径、查询=\u解析\u url(url)
文件“c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site packages\kombu\utils\url.py”,第52行,在url部分
零件。端口,
文件“C:\Program Files(x86)\Microsoft Visual Studio\Shared\Python36\u 64\lib\urllib\parse.py”,第167行,在端口中
端口=int(端口,10)
ValueError:基数为10的int()的文本无效:“pass”
我知道#是一个问题,因为很明显,如果我从密码中删除该字符,它将完美地工作

,因为uri所指的是。它们有一个关于保留字符的部分,
#
就是其中之一

如果URI组件的数据与保留的 字符作为分隔符的用途,则冲突数据必须 在形成URI之前编码的百分比

根据规范,您可以将
#
替换为
%23
——或者只使用不包含保留字符的密码

更新

你是对的,但是同样的RFC也被采用了。还有

它在那里崩溃,您的密码被解释为端口。似乎密码中的
#
强制库将密码解释为端口(失败,因为它不能转换为int)。请注意,域和端口由与用户名和密码相同的字符
分隔

下面说明了正在发生的事情。请注意,
之后的所有内容都被解释为url的片段

Traceback (most recent call last):
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\user\source\repos\BtcApi\BtcApi\btcapienv\Scripts\celery.exe\__main__.py", line 9, in <module>
  File "c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site-packages\celery\__main__.py", line 14, in main
    _main()
  File "c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site-packages\celery\bin\celery.py", line 326, in main
    cmd.execute_from_commandline(argv)
  File "c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site-packages\celery\bin\celery.py", line 488, in execute_from_commandline
    super(CeleryCommand, self).execute_from_commandline(argv)))
  File "c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site-packages\celery\bin\base.py", line 281, in execute_from_commandline
    return self.handle_argv(self.prog_name, argv[1:])
  File "c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site-packages\celery\bin\celery.py", line 480, in handle_argv
    return self.execute(command, argv)
  File "c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site-packages\celery\bin\celery.py", line 412, in execute
    ).run_from_argv(self.prog_name, argv[1:], command=argv[0])
  File "c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site-packages\celery\bin\worker.py", line 221, in run_from_argv
    return self(*args, **options)
  File "c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site-packages\celery\bin\base.py", line 244, in __call__
    ret = self.run(*args, **kwargs)
  File "c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site-packages\celery\bin\worker.py", line 255, in run
    **kwargs)
  File "c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site-packages\celery\worker\worker.py", line 99, in __init__
    self.setup_instance(**self.prepare_args(**kwargs))
  File "c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site-packages\celery\worker\worker.py", line 120, in setup_instance
    self._conninfo = self.app.connection_for_read()
  File "c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site-packages\celery\app\base.py", line 752, in connection_for_read
    return self._connection(url or self.conf.broker_read_url, **kwargs)
  File "c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site-packages\celery\app\base.py", line 828, in _connection
    'broker_connection_timeout', connect_timeout
  File "c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site-packages\kombu\connection.py", line 181, in __init__
    url_params = parse_url(hostname)
  File "c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site-packages\kombu\utils\url.py", line 34, in parse_url
    scheme, host, port, user, password, path, query = _parse_url(url)
  File "c:\users\user\source\repos\btcapi\btcapi\btcapienv\lib\site-packages\kombu\utils\url.py", line 52, in url_to_parts
    parts.port,
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\urllib\parse.py", line 167, in port
    port = int(port, 10)
ValueError: invalid literal for int() with base 10: 'pass
查看删除
#

url可以正确解析-但我猜密码现在是错误的。遗憾的是,我找不到任何描述如何在URI的密码中转义某些内容的来源。但老实说,这听起来很奇怪。密码中的转义字符?我建议只选择一个不带
#
的密码,因为这会混淆pythons URL解析器和最有可能的其他实现。它们有一个关于保留字符的部分,
#
就是其中之一

如果URI组件的数据与保留的 字符作为分隔符的用途,则冲突数据必须 在形成URI之前编码的百分比

根据规范,您可以将
#
替换为
%23
——或者只使用不包含保留字符的密码

更新

你是对的,但是同样的RFC也被采用了。还有

它在那里崩溃,您的密码被解释为端口。似乎密码内部的
强制库解释密码
>>> from urllib.parse import urlparse
>>> url = 'amqp://user:pass#1@localhost:5672//'
>>> urlparse(url)
ParseResult(scheme='amqp', netloc='user:pass', path='', params='', query='', fragment='1@localhost:5672//')
>>> url = 'amqp://user:pass%231@localhost:5672//'
>>> urlparse(url)
ParseResult(scheme='amqp', netloc='user:pass%231@localhost:5672', path='//', params='', query='', fragment='')
>>> urlparse(url).port
5672
>>> urlparse(url).password
'pass%231'