рдкрд╣рд▓реЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рдж aiohttp_proxy рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИред рдпрджрд┐ рдЗрд╕реЗ рдкрд╣рд▓реЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) await e.load_markets()
рдмрд╛рдж рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЗрд╕реЗ рдкрд╣рд▓реЗ await e.load_markets()
рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЙрд╕ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдкрд░ рдЬрд╛рддрд╛ рд░рд╣реЗрдЧрд╛, рднрд▓реЗ рд╣реА рдЖрдк aiohttp_proxy рдХреЛ рдмрд╛рдж рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдореЗрдВ рдмрджрд▓ рджреЗрдВред
рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ? close()
рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рд╕рддреНрд░ рдЪрд░ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░реЗрдВ? рдФрд░/рдпрд╛ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ ccxt рдореЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рддреНрд░ рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ)
import ccxt.async as ccxt
import asyncio
import test2_config as config
async def main():
exchange = 'gatecoin'
e = getattr(ccxt, exchange)()
e.verbose = True
e.apiKey = config.exchange_keys[exchange]['key']
e.secret = config.exchange_keys[exchange]['secret']
e.aiohttp_proxy = 'http://' + config.check_proxylist[0]['host'] + ':' + config.check_proxylist[0]['port']
await e.load_markets(reload=True)
e.aiohttp_proxy = 'http://' + config.transaction_proxy['host'] + ':' + config.transaction_proxy['port']
await e.load_markets(reload=True)
await e.close()
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
рд╡рд╛рдЪрд╛рд▓ рдЙрддреНрдкрд╛рджрди
Request: GET https://api.gatecoin.com/Public/LiveTickers {'User-Agent': 'python-requests/2.18.4', 'Accept-Encoding': 'gzip, deflate'} None
Response: GET https://api.gatecoin.com/Public/LiveTickers 200 <CIMultiDictProxy('Date': 'Tue, 27 Feb 2018 18:15:41 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Set-Cookie': '__cfduid=<snip>; expires=Wed, 27-Feb-19 18:15:40 GMT; path=/; domain=.gatecoin.com; HttpOnly', 'Cache-Control': 'private', 'Content-Encoding': 'gzip', 'Strict-Transport-Security': 'max-age=15552000; includeSubDomains; preload', 'X-Content-Type-Options': 'nosniff', 'Expect-CT': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'Server': 'cloudflare', 'CF-RAY': '<snip>-DUB')> <snip>
Request: GET https://api.gatecoin.com/Public/LiveTickers {'User-Agent': 'python-requests/2.18.4', 'Accept-Encoding': 'gzip, deflate'} None
Response: GET https://api.gatecoin.com/Public/LiveTickers 200 <CIMultiDictProxy('Date': 'Tue, 27 Feb 2018 18:15:41 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Cache-Control': 'private', 'Content-Encoding': 'gzip', 'Strict-Transport-Security': 'max-age=15552000; includeSubDomains; preload', 'X-Content-Type-Options': 'nosniff', 'Expect-CT': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'Server': 'cloudflare', 'CF-RAY': '<snip>-DUB')> <snip>
рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рдкреНрд░рддрд┐ рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдмрдВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдкрд┐рдЫрд▓реЗ рдкрд░рджреЗ рдХреЗ рдкреАрдЫреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ рдЬреЛрдбрд╝реВрдВ
headers['Connection'] = 'close'
рдмреЗрд╕ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреНрд▓рд╛рд╕ (async рдХреЗ рд▓рд┐рдП) рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЙрдХреНрд╕реА рд░реЛрдЯреЗрд╢рди рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рдж рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рд╡рд╣ рд╣реЗрдбрд░ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкрд┐рдЫрд▓реЗ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд▓рд┐рдП рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рдЦреБрд▓рд╛ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдПрдЖрдИрдУрдПрдЪрдЯреАрдЯреАрдкреА рдирдП aiohttp_proxy рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдЙрд╕рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рддреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░реЙрдХреНрд╕реА рдФрд░ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд░рдЦрд░рдЦрд╛рд╡ рдХреЛ рдХреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ headers['Connection'] = 'close'
рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ 'рд╕рд╛рдл' рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред
рдореБрдЭреЗ рд╣реЗрдбрд░ ['рдХрдиреЗрдХреНрд╢рди'] = 'рдХрд░реАрдм' рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ 'рд╕рд╛рдл' рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред
рдХреЙрд▓ рдЬрд╛рд░реА рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рдиреЗ рдХреЗ рдареАрдХ рдмрд╛рдж exchange.headers = {'Connection': 'close'}
рдЬреЛрдбрд╝реЗрдВ:
# option 1
exchange = ccxt.gatecoin({'headers': {'Connection': 'close'}})
# option 2
exchange = ccxt.gatecoin()
exchange.headers = {'Connection': 'close'}
рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!
рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ, thx!