Код для маршрутизации одновременных исходящих запросов API через прокси-серверы - PullRequest
0 голосов
/ 10 июля 2019

Я надеюсь, что вы можете помочь мне с кодом, который мне нужно написать.Я работаю над консольным приложением dotnet core 2.2, которое, по сути, должно будет выполнять большое количество синхронных вызовов API параллельно с веб-интерфейсом API (сторонним и вне моего контроля).Этот API ограничен по IP-скорости, и без балансировки этих запросов он быстро приведет к бану IP.План состоит в том, чтобы сбалансировать трафик запросов API через несколько простых прокси-серверов - запускать что-то вроде TinyProxy, каждый со своим собственным внешним IP

. Чтобы организовать это, мне нужно написать некоторый фрагмент кода (в идеале на Python), который будетпринять эти запросы, перенаправить их на прокси-серверы, а затем передать ответ обратно запрашивающему приложению.Поскольку для выполнения этих вызовов может потребоваться секунда или около того, очень важно, чтобы эта часть программного обеспечения могла обрабатывать параллельные запросы, чтобы поддерживать скорость отклика и не создавать узкое место (вероятно, максимальное число одновременных запросов 5-10. То есть числонастройки прокси серверов у меня будут).Он также должен иметь некоторую логику, чтобы определить, на какой прокси-сервер перенаправлять каждый запрос, основываясь на том, когда каждый прокси последний раз использовался или приближается к точке, в которой он будет ограничен по скорости.

Эта часть оркестровки - это бит, который я не знаю, как справиться.Я предполагаю, что мне нужно было бы иметь сведения о сокете для каждого из прокси-серверов для ретрансляции и предоставить какую-то функцию, которая может принимать запросы для пересылки, но я не уверен, как именно это должно работать.Было бы здорово, если бы он мог выступать в качестве посредника и просто принимать запросы и пересылать их, а также их ответы без каких-либо манипуляций с заголовками и т. Д. - но я никогда не делал ничего подобного, поэтому я был бы благодарен залюбые предложения и / или примеры кода, которые вы могли бы дать - спасибо

...