小编Ada*_*dam的帖子

Docker-撰写持久数据MySQL

如果我运行$ docker-compose down以下内容,我似乎无法保持MySQL数据持续存在.yml

version: '2'
services:
  # other services

  data:
    container_name: flask_data
    image: mysql:latest
    volumes:
      - /var/lib/mysql
    command: "true"

  mysql:
    container_name: flask_mysql
    restart: always
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: 'test_pass' # TODO: Change this
      MYSQL_USER: 'test'
      MYSQL_PASS: 'pass'
    volumes_from:
      - data
    ports:
      - "3306:3306"
Run Code Online (Sandbox Code Playgroud)

我的理解是在我的data容器中使用volumes: - /var/lib/mysqlmap将它映射到我的本地机器目录,其中mysql将数据存储到容器中,并且由于这种映射,即使容器被销毁,数据也应该保持不变.而mysql容器只是进入数据库的客户端接口,因为可以看到本地目录volumes_from: - data

尝试这个答案,它没有用.Docker-撰写持久性数据问题

编辑

改变了我.yml如下图所示,创建了目录./data,但现在当我运行docker-compose up --buildmysql容器无法启动抛出错误说

  data:
    container_name: flask_data
    image: mysql:latest
    volumes:
      - ./data:/var/lib/mysql …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

120
推荐指数
6
解决办法
13万
查看次数

ValueError:并非所有分区都是已知的,在dask数据帧上无法对齐分区错误

我有以下列的以下熊猫数据框

user_id user_agent_id requests
Run Code Online (Sandbox Code Playgroud)

所有列均包含整数。我不想对它们执行某些操作,而无法使用dask数据框运行它们。这就是我的工作。

user_profile = cache_records_dataframe[['user_id', 'user_agent_id', 'requests']] \
    .groupby(['user_id', 'user_agent_id']) \
    .size().to_frame(name='appearances') \
    .reset_index() # I am not sure I can run this on dask dataframe

user_profile_ddf = df.from_pandas(user_profile, npartitions=4)
user_profile_ddf['percent'] = user_profile_ddf.groupby('user_id')['appearances'] \
    .apply(lambda x: x / x.sum(), meta=float) #Percentage of appearance for each user group
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误

raise ValueError("Not all divisions are known, can't align "
ValueError: Not all divisions are known, can't align partitions. Please use `set_index` to set the index.
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?在纯熊猫中,它的效果很好,但是对于许多行来说它变慢了(尽管它们适合内存),所以我想并行化计算。

python dataframe dask dask-distributed

6
推荐指数
1
解决办法
673
查看次数

Docker 卷绑定破坏了 python 脚本 CLI 入口点

好吧,我有一个相当基本的 python clickCLI 应用程序,当在容器中使用绑定卷(文件上的实时开发)运行时,它似乎打破了entry_point我在setup.py

运行以下任一命令

$ docker run -it -v $(pwd):/opt/app gdax
$ docker run -it --mount src=$(pwd),target=/opt/app,type=bind gdax
Run Code Online (Sandbox Code Playgroud)

我得到以下内容

Traceback (most recent call last):
  File "/usr/local/bin/gdax", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3144, in <module>
    @_call_aside
  File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3128, in _call_aside
    f(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3157, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 666, in _build_master
    ws.require(__requires__)
  File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 984, in require
    needed = self.resolve(parse_requirements(requirements))
  File …
Run Code Online (Sandbox Code Playgroud)

python docker

6
推荐指数
1
解决办法
1133
查看次数

Flask-Testing信号不支持错误

运行我的测试时,我得到以下回溯.

in get_context_variable
raise RuntimeError("Signals not supported")
RuntimeError: Signals not supported
Run Code Online (Sandbox Code Playgroud)

__init__.py

from flask_testing import TestCase

from app import create_app, db


class BaseTest(TestCase):
    BASE_URL = 'http://localhost:5000/'

    def create_app(self):
        return create_app('testing')

    def setUp(self):
        db.create_all()

    def tearDown(self):
        db.session.remove()
        db.drop_all()

    def test_setup(self):
        response = self.client.get(self.BASE_URL)
        self.assertEqual(response.status_code, 200)
Run Code Online (Sandbox Code Playgroud)

test_routes.py

from . import BaseTest


class TestMain(BaseTest):

    def test_empty_index(self):
        r = self.client.get('/')
        self.assert200(r)
        self.assertEqual(self.get_context_variable('partners'), None)
Run Code Online (Sandbox Code Playgroud)

似乎get_context_variable函数调用是错误来自的地方.如果我尝试使用,我也会收到此错误assert_template_used.找到任何解决方案都很困难.

python flask flask-testing

5
推荐指数
1
解决办法
531
查看次数

pytest-django 将夹具添加到 live_server 夹具

我需要向live_serverpytest-django专门覆盖的django_db_setup.

话虽如此,我知道对未刷新干净的数据库运行测试并不理想,但这是我正在使用的。

在我们的正常测试套件中,我们使用覆盖django_db_setup在我们的conftest.py文件中不做任何事情,如下所示

@pytest.fixture(scope="session")
def django_db_setup():
    pass
Run Code Online (Sandbox Code Playgroud)

看来,当我使用它live_server提供的夹具时,pytest-django它不尊重这一点,因为它试图在测试结束时刷新数据库。人们将如何规避这一点?我发现了如下所示的结束,但如果有更好的解决方案,我想避免它。

@pytest.fixture(scope='session')
def my_live_server(request):
    request.getfixturevalue('django_db_setup')
    return live_server(request)
Run Code Online (Sandbox Code Playgroud)

python django pytest pytest-django

5
推荐指数
1
解决办法
1102
查看次数