Ccxt: mengubah aiohttp_proxy setelah permintaan pertama tidak berpengaruh

Dibuat pada 27 Feb 2018  ·  3Komentar  ·  Sumber: ccxt/ccxt

  • OS: Windows
  • Versi Bahasa Pemrograman: Python async
  • Versi CCXT: 1201

Mengubah aiohttp_proxy setelah permintaan pertama tidak berpengaruh. Jika disetel setelah yang pertama (misalnya) await e.load_markets() , itu tidak akan digunakan. Jika disetel sebelum await e.load_markets() , itu akan tetap pergi ke server proxy itu, juga jika Anda mengubah aiohttp_proxy ke server proxy lain nanti.

Apa cara termudah untuk memperbaikinya? panggil close() dan timpa variabel sesi? Dan/atau apakah ini sesuatu yang perlu diperbaiki di ccxt (misalnya, tambahkan metode lain untuk memulai kembali sesi)

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())

Keluaran verbose

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>
question

Semua 3 komentar

Rupanya proxy berfungsi per koneksi TCP. Jika tidak ditutup, proxy sebelumnya sedang digunakan. Jika saya menambahkan
headers['Connection'] = 'close' ke metode fetch di kelas pertukaran dasar (untuk async), rotasi proxy berfungsi seperti yang diharapkan karena koneksi TCP ditutup setelah permintaan pertama. Ketika header tersebut tidak ditambahkan, koneksi TCP ke proxy sebelumnya tetap terbuka dan aiohttp menggunakan kembali sambungan tersebut terlepas dari aiohttp_proxy baru.

Jadi perilakunya bisa berbeda tergantung pada proxy dan pertukaran, tergantung jika/bagaimana mereka menerapkan keepalive.

Saya tidak dapat menemukan cara 'bersih' untuk menyuntikkan headers['Connection'] = 'close' .

Saya tidak dapat menemukan cara 'bersih' untuk menyuntikkan header['Connection'] = 'close'.

Tambahkan exchange.headers = {'Connection': 'close'} sebelum melakukan panggilan atau tepat setelah membuat instance pertukaran:


# option 1
exchange = ccxt.gatecoin({'headers': {'Connection': 'close'}})

# option 2
exchange = ccxt.gatecoin()
exchange.headers = {'Connection': 'close'}

Beri tahu kami jika itu tidak membantu. Terima kasih!

Sepertinya berhasil, thx!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat