Невозможно заставить пакет nameko-инжектор Python работать - PullRequest
2 голосов
/ 06 марта 2020

Я занят программированием бэкэнда микросервиса в Python с использованием Nameko. В поисках хорошего пакета внедрения зависимости я наткнулся на Injector. Мне очень понравилось, и я хотел использовать его вместе с Nameko. Затем я заметил небольшую проблему: Nameko создает экземпляры рабочих и не работает с пакетами внедрения зависимостей из коробки. После попытки заставить его работать, используя документацию, я наткнулся на пакет nameko-инжектор . Мне понравилась концепция, и я попытался реализовать ее, но я получаю сообщение об ошибке:

Параметр 'bindings' не заполнен

Использование примера кода из репозитория git (показано ниже) проблема возникла при инициализации класса NamekoInjector.

Рабочий класс микросервиса:

from nameko.rpc import rpc
from services.order_service import OrderService
from nameko_injector.core import NamekoInjector

INJECTOR = NamekoInjector()


@INJECTOR.decorate_service
class OrderWorker:

    # Mandatory field for service discovery
    name = "order_worker"

    def __init__(self, service: OrderService):
        self.service = service

    @rpc
    def get_orders(self):
        return self.service.orders()

Класс OrderService:

from models.order.order import Order


class OrderService(object):

    def __init__(self):
        self.orders = [Order(1), Order(2)]

    def get_users(self):
        return self.orders

Класс Order:

class Order:
    def __init__(self, orderid):
        self.orderid = orderid

    def __str__(self):
        return str(self.orderid)

Просматривая класс NamekoInjector, я не мог выяснить, что именно делает привязка и когда она используется. Во-первых, мне это даже не нужно, но когда я удаляю поля привязки и другие использования в классе NamekoInjector, он все равно не будет работать. Кто-нибудь может мне помочь? Спасибо!

...