PermissionError: [Errno 13]使用Binance API (python)拒绝权限



我在mac上运行用python编写的VS Code交易机器人,在binance交易所交易。不幸的是,当机器人下订单时,我得到零星的错误,分别通过websocket连接。我真的无法解释发生了什么,因为机器人运行良好的一天或两天,然后突然这个错误扰乱了策略,因为它导致订单不再被取消,当他们应该导致无担保交易(没有停止)。

Message: 'Starting new HTTPS connection (%d): %s:%s'
Arguments: (1, 'fapi.binance.com', 443)
--- Logging error ---
Traceback (most recent call last):
File "/Users/username/anaconda3/lib/python3.7/logging/__init__.py", line 1038, in emit
self.flush()
File "/Users/username/anaconda3/lib/python3.7/logging/__init__.py", line 1018, in flush
self.stream.flush()
PermissionError: [Errno 13] Permission denied
Call stack:
File "/Users/username/anaconda3/lib/python3.7/threading.py", line 885, in _bootstrap
self._bootstrap_inner()
File "/Users/username/anaconda3/lib/python3.7/threading.py", line 917, in _bootstrap_inner
self.run()
File "/Users/username/anaconda3/lib/python3.7/threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "/Users/username/Workfiles/python/binance/vs_binance_algo/ETH_LinReg/engine_LinReg.py", line 102, in execute
execution_short_ETH.main()
File "/Users/username/Workfiles/python/binance/vs_binance_algo/ETH_LinReg/execution_short_ETH.py", line 22, in main
response_tradelist = sr.send_signed_request('GET', '/fapi/v1/userTrades', params)
File "/Users/username/Workfiles/python/binance/vs_binance_algo/ETH_LinReg/send_requests_ETH.py", line 49, in send_signed_request
response = dispatch_request(http_method)(**params)
File "/Users/username/anaconda3/lib/python3.7/site-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/Users/username/anaconda3/lib/python3.7/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/Users/username/anaconda3/lib/python3.7/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/Users/username/anaconda3/lib/python3.7/site-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/Users/username/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/Users/username/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 393, in _make_request
httplib_response.length)
Message: '%s://%s:%s "%s %s %s" %s %s'
Arguments: ('https', 'fapi.binance.com', 443, 'GET', '/fapi/v1/userTrades?timestamp=1630094893528&signature=456f8b3cf34a36ad257114d4e8a7ca31d43c27ddb8ad8296bc7e3d3d416f9145', 'HTTP/1.1', 200, None)
--- Logging error ---
Traceback (most recent call last):
File "/Users/username/anaconda3/lib/python3.7/logging/__init__.py", line 1038, in emit
self.flush()
File "/Users/username/anaconda3/lib/python3.7/logging/__init__.py", line 1018, in flush
self.stream.flush()
PermissionError: [Errno 13] Permission denied
Call stack:
File "/Users/username/anaconda3/lib/python3.7/threading.py", line 885, in _bootstrap
self._bootstrap_inner()
File "/Users/username/anaconda3/lib/python3.7/threading.py", line 917, in _bootstrap_inner
self.run()
File "/Users/username/anaconda3/lib/python3.7/threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "/Users/username/Workfiles/python/binance/vs_binance_algo/ETH_LinReg/engine_LinReg.py", line 102, in execute
execution_short_ETH.main()
File "/Users/username/Workfiles/python/binance/vs_binance_algo/ETH_LinReg/execution_short_ETH.py", line 34, in main
#response = sr.send_public_request('/fapi/v1/ticker/24hr?symbol='+symbol)
File "/Users/username/Workfiles/python/binance/vs_binance_algo/ETH_LinReg/send_requests_ETH.py", line 59, in send_public_request
response = dispatch_request('GET')(url=url)
File "/Users/username/anaconda3/lib/python3.7/site-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/Users/username/anaconda3/lib/python3.7/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/Users/username/anaconda3/lib/python3.7/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/Users/username/anaconda3/lib/python3.7/site-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/Users/username/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 588, in urlopen
conn = self._get_conn(timeout=pool_timeout)
File "/Users/username/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 248, in _get_conn
return conn or self._new_conn()
File "/Users/username/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 813, in _new_conn
self.num_connections, self.host, self.port or "443")
Message: 'Starting new HTTPS connection (%d): %s:%s'
Arguments: (1, 'fapi.binance.com', 443)
--- Logging error ---
Traceback (most recent call last):
File "/Users/username/anaconda3/lib/python3.7/logging/__init__.py", line 1038, in emit
self.flush()
File "/Users/username/anaconda3/lib/python3.7/logging/__init__.py", line 1018, in flush
self.stream.flush()
PermissionError: [Errno 13] Permission denied
Call stack:
File "/Users/username/anaconda3/lib/python3.7/threading.py", line 885, in _bootstrap
self._bootstrap_inner()
File "/Users/username/anaconda3/lib/python3.7/threading.py", line 917, in _bootstrap_inner
self.run()
File "/Users/username/anaconda3/lib/python3.7/threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "/Users/username/Workfiles/python/binance/vs_binance_algo/ETH_LinReg/engine_LinReg.py", line 102, in execute
execution_short_ETH.main()
File "/Users/username/Workfiles/python/binance/vs_binance_algo/ETH_LinReg/execution_short_ETH.py", line 34, in main
#response = sr.send_public_request('/fapi/v1/ticker/24hr?symbol='+symbol)
File "/Users/username/Workfiles/python/binance/vs_binance_algo/ETH_LinReg/send_requests_ETH.py", line 59, in send_public_request
response = dispatch_request('GET')(url=url)
File "/Users/username/anaconda3/lib/python3.7/site-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/Users/username/anaconda3/lib/python3.7/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/Users/username/anaconda3/lib/python3.7/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/Users/username/anaconda3/lib/python3.7/site-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/Users/username/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/Users/username/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 393, in _make_request
httplib_response.length)
Message: '%s://%s:%s "%s %s %s" %s %s'
Arguments: ('https', 'fapi.binance.com', 443, 'POST', '/fapi/v1/order?symbol=ETHUSDT&side=SELL&type=MARKET&quantity=0.01&newOrderRespType=RESULT&timestamp=1630094894451&signature=67252a93834cedde133ad0fa62683126a9ca583147fffcf2cefbdff071fa4ce3', 'HTTP/1.1', 200, None)
--- Logging error ---
Traceback (most recent call last):
File "/Users/username/anaconda3/lib/python3.7/logging/__init__.py", line 1038, in emit
self.flush()
File "/Users/username/anaconda3/lib/python3.7/logging/__init__.py", line 1018, in flush
self.stream.flush()
PermissionError: [Errno 13] Permission denied
Call stack:
File "/Users/username/anaconda3/lib/python3.7/threading.py", line 885, in _bootstrap
self._bootstrap_inner()
File "/Users/username/anaconda3/lib/python3.7/threading.py", line 917, in _bootstrap_inner
self.run()
File "/Users/username/anaconda3/lib/python3.7/threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "/Users/username/Workfiles/python/binance/vs_binance_algo/ETH_LinReg/engine_LinReg.py", line 102, in execute
execution_short_ETH.main()
File "/Users/username/Workfiles/python/binance/vs_binance_algo/ETH_LinReg/execution_short_ETH.py", line 58, in main
TP = int(entryPrice-settings_ETH.TP)
File "/Users/username/Workfiles/python/binance/vs_binance_algo/ETH_LinReg/send_requests_ETH.py", line 49, in send_signed_request
response = dispatch_request(http_method)(**params)
File "/Users/username/anaconda3/lib/python3.7/site-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/Users/username/anaconda3/lib/python3.7/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/Users/username/anaconda3/lib/python3.7/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/Users/username/anaconda3/lib/python3.7/site-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/Users/username/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 588, in urlopen
conn = self._get_conn(timeout=pool_timeout)
File "/Users/username/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 248, in _get_conn
return conn or self._new_conn()
File "/Users/username/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 813, in _new_conn
self.num_connections, self.host, self.port or "443")

…等等......我在dev.binance论坛上找不到这方面的任何东西(而且他们无论如何都不是很有帮助)。这个错误意味着什么?

我的直觉是一个导入的模块尝试用logging模块创建一个日志文件并引发一个PermissionError

尝试禁用日志记录:

import logging.config
logging.config.dictConfig({
'version': 1,
'disable_existing_loggers': True,
})