Python multiprocessamento: AttributeError: não Pode picles objeto local

0

Pergunta

Eu escrevi um ChatOps bot para a ferramenta de colaboração Mattermost utilizando este framework. Agora eu estou tentando escrever e executar testes de integração e usei seus exemplos. Por clonar o repositório git, você pode executar os testes por si mesmo. Seus docker-compose.yml arquivo irá funcionar apenas em uma máquina Linux. Se você quiser reproduzi-lo em uma máquina de Mac, você terá que editar o docker-compose.yml para:

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"

Depois de executar o comando docker-compose up -d Mattermost está disponível em localhost:8065. Eu só levei um teste simples de seu projeto e copiado em base-test.py. Você pode ver o código fonte aqui. Depois de iniciar o teste executando o comando pytest --capture=no --log-cli-level=DEBUG . ele irá retornar o seguinte erro: AttributeError: Can't pickle local object 'start_bot.<locals>.run_bot'. Este erro aparece, também, no mesmo caso de teste no seu projeto. O erro ocorre na linha 92 no utils.py arquivo

O que estou fazendo de errado aqui?

2
0

Eu não sei se você já passou por este caminho, mas eu acho que você pode obter passado a decapagem de erro fazendo run_bot tirar o bot que ele faz bot.run() com um argumento e, em seguida, passá-lo para o processo.

2021-11-24 15:38:26

Não entendo muito bem o que você quis dizer. Eu tentei várias coisas, como a aprovação de bot como um argumento, mas sem sucesso :(
Lucas Scheepers
0

Dê uma olhada no guia de Ação em que o repositório no GitHub. Pytest parece executar corretamente (ignorando as exceções no webhook teste)

Aqui está uma recente execução, você pode usar para comparar o seu ambiente de set-up: https://github.com/attzonko/mmpy_bot/runs/4289644769?check_suite_focus=true

2021-11-29 17:04:19

Eu tenho exatamente o mesmo ambiente: Python 3.8.2 e Pytest 6.2.5. Também estou executando um comando diferente do afirmado na questão anterior e retorna o pickle error. Quando eu tento usar o comando que você está usando: pytest . -vv -n auto ele retorna: unrecognized arguments: -n auto. Você, talvez, sabe por que? Também eu postei essa pergunta seis dias atrás, e os testes de rodava 7 dias atrás, talvez o que explica por que ele agora está falhando em minha máquina local?
Lucas Scheepers

Aqui está uma corrida de 1h atrás: github.com/attzonko/mmpy_bot/runs/...
Plazgoth

Em outros idiomas

Esta página está em outros idiomas

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