Диспетчер контекста Python, поддерживающий вызовы Asyn c и Syn c - PullRequest
0 голосов
/ 02 марта 2020

Я создаю менеджер контекста, который инициализируется / внедряется с помощью фабрики, которая создает экземпляры ресурсов, которые затем будут управляться менеджером контекста.

У меня есть две разные фабрики: Factory AsyncFactory

Где создается стандартная версия ресурса. А другой создает Asyn c версию ресурса.

На данный момент у меня есть два диспетчера контекста: ContextManager и AsyncContextManager. Глядя на мой код, я понимаю, что оба менеджера контекста init и вспомогательные функции идентичны в обеих реализациях.

Один из вариантов - создать BaseContextManager, а затем унаследовать эту общую функциональность.

Другой вариант - объединить в один менеджер контекста, который имеет enter , exit и aenter , aexit реализации метода. ie

class ContextManager

    def __init__(self, a, b, c)
       ...

    def __enter__(self):
       ...

    def __exit__(self):
       ...

    def __aenter__(self):
       ...

    def __aexit__(self):
       ...

    def helper()
      ...

и затем, в зависимости от того, называется ли он «с» или «асин c с», он будет работать асин c или нет.

Интересно что думают люди об этом типе Менеджера контекста. Мое первоначальное чувство, что я держу их в качестве двух менеджеров, чтобы избежать многого в одном классе, но меня интересуют другие точки зрения.

...