Przetwarzania wieloprocesowego Python: Błąd atrybutu: Nie można przydzielić lokalny obiekt

0

Pytanie

Napisałem czat bota do narzędzia współpracy Mattermost za pomocą tego frameworka. Teraz staram się pisać i uruchamiać testy integracyjne i używał ich przykłady. Klonowanie repozytorium git, możesz uruchomić testy samodzielnie. Ich docker-compose.yml plik będzie działać tylko na komputerze z systemem Linux. Jeśli chcesz odtworzyć go na komputerze Mac, musisz edytować docker-compose.yml Dla:

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"

Po wykonaniu polecenia docker-compose up -d Najważniejsze jest dostępne pod adresem localhost:8065. Wziąłem tylko jeden prosty test z projektu i skopiować go do base-test.py. Możesz zobaczyć mój kod źródłowy tutaj. Po uruchomieniu testu, wykonując polecenie pytest --capture=no --log-cli-level=DEBUG . zwróci następujący błąd: AttributeError: Can't pickle local object 'start_bot.<locals>.run_bot'. Ten błąd pojawia się również w tym samym testowym przykładzie w ich projekcie. Błąd występuje w wierszu 92 w utils.py plik

Co ja tu robię nie tak?

2
0

Nie wiem, czy jesteś już na tej drodze, ale myślę, że można pokonać błąd marynowania, zmuszając run_bot wziąć bota, który robi bot.run() za pomocą argumentu, a następnie przekazać go do procesu.

2021-11-24 15:38:26

Nie do końca rozumiem, co miałeś na myśli. Próbowałem wiele rzeczy, takich jak przesyłanie bot jako argument, ale bezskutecznie :(
Lucas Scheepers
0

Spójrz na kartę Działanie w tym repozytorium GitHub. Test Pytest, wygląda, że działa poprawnie (pomijając wyjątki w teście webhook)

Oto niedawny startup, który można użyć do porównania ustawień środowiska: https://github.com/attzonko/mmpy_bot/runs/4289644769?check_suite_focus=true

2021-11-29 17:04:19

Mam dokładnie ten sam środa: Python 3.8.2 i Pytest 6.2.5. Również uruchamiam inny zespół, określonej w pytaniu powyżej, a ona zwraca pickle error. Gdy próbuję użyć polecenia, którego używasz: pytest . -vv -n auto wraca: unrecognized arguments: -n auto. Może być, wiesz dlaczego? Ponadto opublikowałem to pytanie sześć dni temu, i testy zostały uruchomione 7 dni temu, być może to wyjaśnia, dlaczego teraz się zawiesi na mojej lokalnej maszynie?
Lucas Scheepers

Oto nagranie, wykonane 1 godzinę temu: github.com/attzonko/mmpy_bot/runs/...
Plazgoth

W innych językach

Ta strona jest w innych językach

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