Apache 上的 Flask 应用无法访问网络
Network is unreachable for Flask app on Apache
我有一个简单的 Flask 应用程序托管一个用于将数据输入到本地数据库的表单。
我正在使用 python zeep 验证带有 wdsl 服务的字段之一(只需检查 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl 是否存在增值税)
应用程序服务器位于公司代理之后。 http_proxy 和 https_proxy 都已设置。 wdsl 服务 returns 测试时预期的数据(本地主机,或 运行 直接使用 python 验证功能)
当我 运行 使用 Apache2 的应用程序时,突然无法访问网络。我相信我在 Flaskapp.conf 中遗漏了一些配置,这些配置会通过企业代理路由流量。
有人可以 help/direct 我吗?
谢谢。
urlib3 错误:
File "/home/administrator/v_env/flaskapp/lib/python3.6/site-packages/urllib3/connection.py", line 170, in _new_conn
(self._dns_host, self.port), self.timeout, **extra_kw
File "/home/administrator/v_env/flaskapp/lib/python3.6/site-packages/urllib3/util/connection.py", line 96, in create_connection
raise err
File "/home/administrator/v_env/flaskapp/lib/python3.6/site-packages/urllib3/util/connection.py", line 86, in create_connection
sock.connect(sa)
OSError: [Errno 101] Network is unreachable
Flaskapp.conf
<VirtualHost *:80>
ServerName $stationIP
ServerAdmin name@domain.com
WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi
<Directory /var/www/FlaskApp/FlaskApp/>
Order allow,deny
Allow from all
</Directory>
Alias /static /var/www/FlaskApp/FlaskApp/static
<Directory /var/www/FlaskApp/FlaskApp/static/>
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
验证函数
def validate_vat(self, vat):
transport = Transport(timeout=10)
try:
client = Client('http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl', transport=transport)
client.transport.session.proxies = {'http':'http://<proxy.server.com>:9090'}
response = client.service.checkVat(vat.data[0:2].upper(), vat.data[2:])
except:
raise wtforms.validators.ValidationError('VAT validation service unavailable. Please try again later')
if not response.valid:
raise wtforms.validators.ValidationError('Not a valid VAT')
配置Apache2槽
/etc/apache2/envvars
通过添加 export http_proxy='<your_proxy>:<port>'
解决了这个问题。
我有一个简单的 Flask 应用程序托管一个用于将数据输入到本地数据库的表单。 我正在使用 python zeep 验证带有 wdsl 服务的字段之一(只需检查 http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl 是否存在增值税) 应用程序服务器位于公司代理之后。 http_proxy 和 https_proxy 都已设置。 wdsl 服务 returns 测试时预期的数据(本地主机,或 运行 直接使用 python 验证功能) 当我 运行 使用 Apache2 的应用程序时,突然无法访问网络。我相信我在 Flaskapp.conf 中遗漏了一些配置,这些配置会通过企业代理路由流量。 有人可以 help/direct 我吗? 谢谢。
urlib3 错误:
File "/home/administrator/v_env/flaskapp/lib/python3.6/site-packages/urllib3/connection.py", line 170, in _new_conn
(self._dns_host, self.port), self.timeout, **extra_kw
File "/home/administrator/v_env/flaskapp/lib/python3.6/site-packages/urllib3/util/connection.py", line 96, in create_connection
raise err
File "/home/administrator/v_env/flaskapp/lib/python3.6/site-packages/urllib3/util/connection.py", line 86, in create_connection
sock.connect(sa)
OSError: [Errno 101] Network is unreachable
Flaskapp.conf
<VirtualHost *:80>
ServerName $stationIP
ServerAdmin name@domain.com
WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi
<Directory /var/www/FlaskApp/FlaskApp/>
Order allow,deny
Allow from all
</Directory>
Alias /static /var/www/FlaskApp/FlaskApp/static
<Directory /var/www/FlaskApp/FlaskApp/static/>
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
验证函数
def validate_vat(self, vat):
transport = Transport(timeout=10)
try:
client = Client('http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl', transport=transport)
client.transport.session.proxies = {'http':'http://<proxy.server.com>:9090'}
response = client.service.checkVat(vat.data[0:2].upper(), vat.data[2:])
except:
raise wtforms.validators.ValidationError('VAT validation service unavailable. Please try again later')
if not response.valid:
raise wtforms.validators.ValidationError('Not a valid VAT')
配置Apache2槽
/etc/apache2/envvars
通过添加 export http_proxy='<your_proxy>:<port>'
解决了这个问题。