1

私はApacheを使用してローカル開発のdjangoをセットアップしています。問題は、職場で http プロキシの背後で作業しているときに、展開サーバーにプロキシがないため、要求の呼び出しが失敗することです。

リクエスト ライブラリからのすべての呼び出しをプロキシ経由にする方法はありますか。[proxyes パラメータを使用して個々の呼び出しにプロキシを追加する方法は知っていますが、グローバルな解決策はありますか? ]

4

2 に答える 2

4

AmrFouad から同じエラーが報告されました。最後に、次のように wsgi.py を更新して修正しました。

os.environ['http_proxy'] = "http://proxy.xxx:8080"
os.environ['https_proxy'] = "http://proxy.xxx:8080"
于 2013-07-17T04:39:43.207 に答える
3

wsgiファイルに次の行を追加します。

import os

http_proxy  = "10.10.1.10:3128"
https_proxy = "10.10.1.11:1080"
ftp_proxy   = "10.10.1.10:3128"

proxyDict = { 
              "http"  : http_proxy, 
              "https" : https_proxy, 
              "ftp"   : ftp_proxy
            }

os.environ["PROXIES"] = proxyDict

そして今、あなたはあなたが望むどこでもこの環境変数を使うことができます、

r = requests.get(url, headers=headers, proxies=os.environ.get("PROXIES"))

PS-あなたは以下のリンクを見る必要があります

  1. 環境変数の公式Pythonドキュメント
  2. mod-wsgiとdjangoを使用して環境変数をどこでどのように設定しますか?
  3. Python環境変数

更新1

プロキシ設定がでのみ使用されるように、次のようなことを行うことができますlocalhost

import socket
if socket.gethostname() == "localhost":
    # do something only on local server, e.g. setting os.environ["PROXIES"]
    os.environ["PROXIES"] = proxyDict
else:
    # Set os.environ["PROXIES"] to an empty dictionary on other hosts
    os.environ["PROXIES"] = {}
于 2013-01-11T19:24:45.667 に答える