获取 [Errno 111] 连接被拒绝时如何使用 Python 代理服务器
How to use Python proxy server when getting [Errno 111] Connection refuse
我尝试在 pythonanywhere 上测试 Odoo Web Service API from Python and everything works fine from localhost using a basic Django app and xmlrpclib. But when I host it 我得到一个 [Errno 111] 连接被拒绝 错误:
在他们的帮助页面 they describe 上,免费帐户的端口已关闭,必须使用 proxy.server:3128 的 HTTP 代理。怎么做?
实际上,一旦将 .odoo.com 添加到他们的 whitelist,它应该在没有代理的情况下工作,但代理问题对我来说也很有趣如何 运行 此应用程序在不同的主机上。
这是我的视图的 Django 代码(是的,我知道将 html 放在视图中是不好的做法,仅用于测试):
from django.http import HttpResponse
import xmlrpclib
url = "https://demo3.odoo.com"
db = "demo_100_1489044950"
username = "admin"
password = "admin"
#odoo service connection
common = xmlrpclib.ServerProxy('{}/xmlrpc/2/common'.format(url))
uid = common.authenticate(db, username, password, {})
models = xmlrpclib.ServerProxy('{}/xmlrpc/2/object'.format(url))
products = models.execute_kw(db, uid, password,
'product.template', 'search_read',
[[]],
{'fields': ['name', 'list_price'], 'limit': 10})
for product in products:
print product['id'], product['name'], product['list_price']
def index(request):
html = "<html><body><h1>Odoo Products</h1>"
for product in products:
name = product['name'].encode("utf-8", "strict")
html += "<div>"+name+": "+str(product['list_price'])+"</div>"
html += "</body></html>"
return HttpResponse(html)
ps: Django 应用程序的源代码在 this github repository
This blog post 解释了如何创建代理感知的 xmlrpclib.ServerProxy
的子类,这应该可以正常工作。 (注意:它对我来说看起来完全正确,但我自己还没有尝试过。)
我尝试在 pythonanywhere 上测试 Odoo Web Service API from Python and everything works fine from localhost using a basic Django app and xmlrpclib. But when I host it 我得到一个 [Errno 111] 连接被拒绝 错误:
在他们的帮助页面 they describe 上,免费帐户的端口已关闭,必须使用 proxy.server:3128 的 HTTP 代理。怎么做?
实际上,一旦将 .odoo.com 添加到他们的 whitelist,它应该在没有代理的情况下工作,但代理问题对我来说也很有趣如何 运行 此应用程序在不同的主机上。
这是我的视图的 Django 代码(是的,我知道将 html 放在视图中是不好的做法,仅用于测试):
from django.http import HttpResponse
import xmlrpclib
url = "https://demo3.odoo.com"
db = "demo_100_1489044950"
username = "admin"
password = "admin"
#odoo service connection
common = xmlrpclib.ServerProxy('{}/xmlrpc/2/common'.format(url))
uid = common.authenticate(db, username, password, {})
models = xmlrpclib.ServerProxy('{}/xmlrpc/2/object'.format(url))
products = models.execute_kw(db, uid, password,
'product.template', 'search_read',
[[]],
{'fields': ['name', 'list_price'], 'limit': 10})
for product in products:
print product['id'], product['name'], product['list_price']
def index(request):
html = "<html><body><h1>Odoo Products</h1>"
for product in products:
name = product['name'].encode("utf-8", "strict")
html += "<div>"+name+": "+str(product['list_price'])+"</div>"
html += "</body></html>"
return HttpResponse(html)
ps: Django 应用程序的源代码在 this github repository
This blog post 解释了如何创建代理感知的 xmlrpclib.ServerProxy
的子类,这应该可以正常工作。 (注意:它对我来说看起来完全正确,但我自己还没有尝试过。)