Ccxt: تغيير aiohttp_proxy بعد الطلب الأول ليس له أي تأثير

تم إنشاؤها على ٢٧ فبراير ٢٠١٨  ·  3تعليقات  ·  مصدر: ccxt/ccxt

  • نظام التشغيل: Windows
  • إصدار لغة البرمجة: Python async
  • إصدار CCXT: 1201

تغيير 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>
question

ال 3 كومينتر

يبدو أن الوكيل يعمل لكل اتصال TCP. إذا لم يكن مغلقًا ، فسيتم استخدام الوكلاء السابقين. إذا أضفت
headers['Connection'] = 'close' لطريقة الجلب في فئة التبادل الأساسي (غير المتزامن) ، يعمل دوران الوكيل كما هو متوقع لأن اتصال TCP مغلق بعد الطلب الأول. عندما لا يتم إضافة هذا الرأس ، يظل اتصال TCP بالوكيل السابق مفتوحًا ويعيد aiohttp استخدامه بغض النظر عن aiohttp_proxy الجديد.

لذلك يمكن أن يكون السلوك مختلفًا اعتمادًا على الوكيل والتبادل ، اعتمادًا على ما إذا كان / كيف يتم تنفيذ Keepalive.

لا يمكنني العثور على طريقة "نظيفة" لضخ headers['Connection'] = 'close' رغم ذلك

لا يمكنني العثور على طريقة "نظيفة" لإدخال الرؤوس ['Connection'] = "إغلاق" بالرغم من ذلك.

أضف exchange.headers = {'Connection': 'close'} قبل إصدار المكالمة أو بعد إنشاء مثيل التبادل:


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

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

دعنا نعرف إذا كان لا يساعد. شكرا!

يبدو أنه يعمل ، شكرا!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

kumboo picture kumboo  ·  3تعليقات

jjhesk picture jjhesk  ·  3تعليقات

luigikitten picture luigikitten  ·  3تعليقات

shnhrrsn picture shnhrrsn  ·  3تعليقات

sajjadhbutt2 picture sajjadhbutt2  ·  3تعليقات