python - Apache 上的 Flask 应用程序无法访问网络
问题描述
我有一个简单的 Flask 应用程序,它托管一个用于将数据输入到本地数据库的表单。我正在使用 python zeep 验证具有 wdsl 服务的字段之一(只需使用http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl检查增值税是否存在)应用程序服务器位于公司代理后面。http_proxy 和 https_proxy 都已设置。wdsl 服务在测试时按预期返回数据(本地主机,或直接使用 python 运行验证功能)当我使用 Apache2 运行应用程序时,突然网络无法访问。我相信我在 Flaskapp.conf 中遗漏了一些配置,这些配置将通过公司代理路由流量。有人可以在这里帮助/指导我吗?谢谢你。
urllib3 错误:
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')
解决方案
/etc/apache2/envvars
通过添加配置 Apache2 槽
来export http_proxy='<your_proxy>:<port>'
解决此问题。
推荐阅读
- haskell - Haskell TypeClasses - 覆盖超类函数
- android - 为 android 构建没有 ruy 的 TFLite
- sql - Pyspark Pivot 在一列中重复值以获取以下行的所有唯一值
- reactjs - 将对象移出组件
- r - 将写入选项保存到在线保管箱文件中
- reactjs - ReactJS - 使用从多个表单组件收集的数据创建单个对象的自定义钩子
- python - 随机森林训练测试分割精度
- node.js - 如何将配置文件导入打字稿中的多个文件
- javascript - 如何防止 InstantSearch 被切断?(阿尔戈利亚,React Native)
- ios - 如何在 Xamarin Forms 中为 iOS 构建显示图像