Tag: python

连接到VPN时无法连接到postgres数据库

我有一个docker镜像,可以通过OpenVPN连接到VPN服务来收集一些数据,然后将这些数据插入到Postgres表中。 当我在本地的Windows机器上运行它时,它工作得很好,当我试图让它在AWS Batch上工作时,麻烦就开始了。 在AWS Batch上使用相同的映像和命令时,一旦build立VPN连接,容器就不能再连接到Postgres数据库。 要清楚: 1.(在VPN连接之前)可以通过HTTP连接到互联网并插入到Postgres。 2.(VPN连接后)可以通过HTTP(现在从不同的IP)连接到互联网,但不能连接到Postgres。 它给出了错误: “psycopg2.OperationalError:无法连接到服务器:连接超时。服务器是否在主机”地址“(ip)上运行,并在端口5432上接受TCP / IP连接? 我敢肯定,我的数据库运行在主机打开的端口,因为我试图做的工作正常在Windows上,并在EC2上使用VPN之前。 当我的本地Windows计算机上的容器与AWS Batch加速的EC2服务器相比,Docker镜像的行为不同时,我感到茫然,任何帮助都将不胜感激。 解决scheme:我需要为我的计算资源设置新的VPC,而不是使用默认的VPC。

Cron的作业在docker集装箱内执行Flask / Python函数?

我想在Docker容器之外使用一个cron作业来在Docker容器中执行一个Python / Flask函数。 有可能吗? 只是做docker exec并不这样做,我相信Flask在允许访问函数方面可能有一些限制。 还是有更好的select? 这里是main.py的示例代码我希望cron作业在docker容器中运行的main.py中执行getThisFunction() from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "Hello World!" @routes.route('/getThisFunction', methods=['GET', 'POST']) def getThisFunction(): return "foobar" if __name__ == '__main__': app.run() 我想要像下面的cron作业(不完全相似): 26 08 * * * docker exec c78ddbed4ad9 {some stuff to execute getThisFunction() in main.py}

在bash脚本中激活virtualenv和envdir

我创build了一个dockerfile来安装virtualenv和virtualenvwrapper,以便在python3上运行。 FROM ubuntu:14.04 RUN apt-get update \ && apt-get install -y python3 python3-pip python3-dev \ && pip3 install –upgrade pip && apt-get install unzip # virtualenv stuff RUN mkdir -p /opt/virtualenvs ENV WORKON_HOME /opt/virtualenvs ENV VIRTUALENVWRAPPER_PYTHON /usr/bin/python3 # install pip stuff RUN pip3 install virtualenv virtualenvwrapper RUN /bin/bash -c "source /usr/local/bin/virtualenvwrapper.sh \ && mkvirtualenv -p […]

烧瓶,uWSGI和线程产生不可重现的结果

我有一个基于flask + uwsgi(运行在docker容器中)的API。 它的input是一个文本,它的输出是一个简单的json,带有关于这个文本的数据(类似{“score”:1})。 我在5个线程中请求这个API。 在我的uwsgi.ini中我有进程= 8和线程= 2.最近我注意到一些结果是不可重复的,虽然API的源代码没有改变,没有任何代码挑起内部的随机答案。 所以我采取了相同的一组查询,并将其提交给我的API,首先是顺序,然后是反向的。 大约1%的答复不同! 当我在本地做同样的事情(没有线程和docker&只在一个线程),结果变得一样。 所以我的假设是烧瓶有时会混淆对不同线索的反应。 有人处理过吗? 我发现只有https://github.com/getsentry/raven-python/issues/923 ,但如果是这样的话,那么问题仍然没有解决,因为我明白… 所以这里是相关的代码片断: uwsgi.ini [uwsgi] socket = :8000 processes = 8 threads = 2 master = true module = web:app 要求 import json from multiprocessing import Pool import requests def fetch_score(query): r = requests.post("http://url/api/score", data = query) score = json.loads(r.text) query["score"] = […]

Django与Docker模块没有find错误

我正在试图用Docker构build一个Django应用程序。 我的应用程序将在本地服务器上运行,但是当我尝试使用docker进行迁移时,它会抛出一个Module Not Found错误。 这是我的requirements.txt djangorestframework==3.7.0 Django==1.11.5 #import_export==0.5.1 django-csvimport==2.2 psycopg2 这是我的docker-compose.yml`。 docker-compose.yml version: '3' services: web: build: . command: python djangorest/manage.py runserver 0.0.0.0:8000 volumes: – .:/code ports: – "8000:8000" 这是我的Dockerfile FROM python:3.6 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ #COPY . /code/ RUN pip install -r requirements.txt ADD . /code/ 我遇到以下错误,当我通过这个CMDdocker […]

在Docker中启动Python服务器,从本地主机访问

我有一个Docker容器,里面有一些Python脚本。 其中一个脚本启动一个HTTP服务器。 我希望能够从我的主机上的localhost主机(macOS)访问此服务器。 我的运行命令如下: docker run -it -p 127.0.0.1:7850:80 -v ~/path/to/scripts:/src my-container 比手动启动Python脚本来运行服务器。 Python脚本在127.0.0.1:80上启动HTTP服务器。 在我的主机上,我尝试curl 127.0.0.1:7850 -d '{}' ,但服务器没有返回它应该。 另外,Python脚本本身应该打印所有接收到的JSON数据,但不打印任何内容。 我怎样才能使这个工作?

PyHive Thrift传输exception:读取0个字节

我想通过使用DB-API(asynchronous)示例通过python(PyHive 0.5,python 2.7)连接到Docker容器(从容器外)运行的Hive server-2 from pyhive import hive conn = hive.connect(host='172.17.0.2', port='10001', auth='NOSASL') 但是,我得到以下错误 Traceback (most recent call last): File "py_2.py", line 4, in <module> conn = hive.connect(host='172.17.0.2', port='10001', auth='NOSASL') File "/home/foodie/anaconda2/lib/python2.7/site-packages/pyhive/hive.py", line 64, in connect return Connection(*args, **kwargs) File "/home/foodie/anaconda2/lib/python2.7/site-packages/pyhive/hive.py", line 164, in __init__ response = self._client.OpenSession(open_session_req) File "/home/foodie/anaconda2/lib/python2.7/site-packages/TCLIService/TCLIService.py", line 187, in OpenSession return […]

python库aiohttp / asyncio在哪里得到它的证书存储?

我正在运行一个以Ubuntu为基础的Docker容器,并且正在尝试向该项目添加一个新的证书颁发机构。 我不完全确定什么是失败的,但我似乎无法使其工作。 我按照这个页面上的指示: http : //manpages.ubuntu.com/manpages/zesty/man8/update-ca-certificates.8.html通过将CA文件添加到/ usr / share / ca-certificates目录中,在/etc/ca-certificates.conf中指定CA文件,然后运行update-ca-certificates,完成后会显示一条消息,指出已添加3个新证书。 但是,aiohttp仍在打印错误 aiohttp.errors.ClientOSError:[Errno 1]无法连接到主机www.myserver.com:443 ssl:True [无法连接到www.myserver.com:443 [[SSL:CERTIFICATE_VERIFY_FAILED]证书validation失败(_ssl.c: 719)]] 我被告知,aiohttp本身并不访问证书存储,而是依赖asyncio,最近我认为它被Python吸收。 所以我不知道是否有某个地方使用不同的证书存储,但是我只想知道在哪里可以添加我的CA文件,这样他们就可以使用aiohttp。

在Docker(Cloudron)中刷新Django应用程序的值

所以我有一些Python的知识,但是与Django和Docker是一个完整的初学者。 我的问题是:我打包了一个非常基本的Django应用程序到一个Docker应用程序(实际上是一个Cloudron应用程序,Cloudron是一个基于Docker的解决scheme)。 该应用程序现在正在我的服务器上运行( eth.ncollig.net )。 目的是给我以太的价格。 但view.py脚本运行在服务器上的应用程序启动时,variables的值,以欧元为单位的ether的价格已被设置为251.7,并且从不刷新。 我希望在每次新的页面加载时重新计算这个variables的值。 我该怎么做才能做到这一点? 在此先感谢您的帮助。 这是我的views.py: from django.http import HttpResponse from coinbase.wallet.client import Client client = Client('yhKYHa8AkQaHXDMc','quspNs86vAvsRtyuGmE3nC5o9Nki2pqP') rates = client.get_exchange_rates(currency='ETH') eth_rate = rates['rates']['EUR'] def index(request): return HttpResponse("1 ETH = %s EUR" % eth_rate) 这是我的start.sh,用来启动gunicorn服务器: #!/bin/bash # Start Gunicorn processes echo Starting Gunicorn. exec gunicorn ethprice.wsgi:application \ –bind 0.0.0.0:8000 \ –workers […]

芹菜没有findpostgres容器

我在我的项目中使用django和芹菜与docker工人。 在docker,我有三个容器:应用程序,芹菜,postgres 在芹菜任务中,当我试图得到一个模型: @app.task def test(): Model.objects.get(pk=1) ,我有这个错误: Is the server running on host "127.0.0.1" and accepting TCP/IP connections on port 5432? 那个错误来自芹菜容器 。 如果我删除这个lodel电话,一切运作良好。 postgres容器在端口5432,它适用于应用程序容器。 我想这也许是因为当celery任务执行时,任务本身不是django项目的一部分,所以它没有正确的configuration。 我试过django芹菜,但有同样的错误。