Многопроцессорная обработка Python: Ошибка атрибута: Не удается выделить локальный объект

0

Вопрос

Я написал чат-бота для инструмента совместной работы Mattermost, используя этот фреймворк. Сейчас я пытаюсь писать и запускать интеграционные тесты и использовал их примеры. Клонируя репозиторий git, вы можете запускать тесты самостоятельно. Их docker-compose.yml файл будет работать только на компьютере с Linux. Если вы хотите воспроизвести его на компьютере Mac, вам придется отредактировать docker-compose.yml Для:

version: "3.7"

services:
  app:
    container_name: "mattermost-bot-test"
    build: .
    command: ./mm/docker-entry.sh
    ports:
      - "8065:8065"
    extra_hosts:
      - "dockerhost:127.0.0.1"

После выполнения команды docker-compose up -d Самое важное доступно по адресу localhost:8065. Я взял только один простой тест из их проекта и скопировал его в base-test.py. Вы можете увидеть мой исходный код здесь. После запуска теста, выполнив команду pytest --capture=no --log-cli-level=DEBUG . он вернет следующую ошибку: AttributeError: Can't pickle local object 'start_bot.<locals>.run_bot'. Эта ошибка также отображается в том же тестовом примере в их проекте. Ошибка возникает в строке 92 в utils.py файл

Что я здесь делаю не так?

2
0

Я не знаю, пошли ли вы уже по этому пути, но я думаю, что вы могли бы преодолеть ошибку маринования, заставив run_bot принять бота, который он делает bot.run() с помощью аргумента, а затем передайте его процессу.

2021-11-24 15:38:26

Не совсем понимаю, что вы имели в виду. Я пробовал множество вещей, таких как передача bot в качестве аргумента, но безуспешно :(
Lucas Scheepers
0

Взгляните на вкладку Действие в этом репозитории GitHub. Тест Pytest, похоже, выполняется правильно (игнорируя исключения в тесте webhook)

Вот недавний запуск, который вы можете использовать для сравнения настроек вашей среды: https://github.com/attzonko/mmpy_bot/runs/4289644769?check_suite_focus=true

2021-11-29 17:04:19

У меня точно такая же среда: Python 3.8.2 и Pytest 6.2.5. Также я запускаю другую команду, указанную в вопросе выше, и она возвращает pickle error. Когда я пытаюсь использовать команду, которую вы используете: pytest . -vv -n auto он возвращается: unrecognized arguments: -n auto. Может быть, вы знаете, почему? Кроме того, я опубликовал этот вопрос шесть дней назад, и тесты были запущены 7 дней назад, может быть, это объясняет, почему сейчас он выходит из строя на моей локальной машине?
Lucas Scheepers

Вот запись, сделанная 1 час назад: github.com/attzonko/mmpy_bot/runs/...
Plazgoth

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................