Source code for hydrogram.methods.utilities.compose
# Hydrogram - Telegram MTProto API Client Library for Python# Copyright (C) 2017-2023 Dan <https://github.com/delivrance># Copyright (C) 2023-present Hydrogram <https://hydrogram.org>## This file is part of Hydrogram.## Hydrogram is free software: you can redistribute it and/or modify# it under the terms of the GNU Lesser General Public License as published# by the Free Software Foundation, either version 3 of the License, or# (at your option) any later version.## Hydrogram is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU Lesser General Public License for more details.## You should have received a copy of the GNU Lesser General Public License# along with Hydrogram. If not, see <http://www.gnu.org/licenses/>.importasynciofromtypingimportTYPE_CHECKINGfrom.idleimportidleifTYPE_CHECKING:importhydrogram
[docs]asyncdefcompose(clients:list["hydrogram.Client"],sequential:bool=False):"""Run multiple clients at once. This method can be used to run multiple clients at once and can be found directly in the ``hydrogram`` package. If you want to run a single client, you can use Client's bound method :meth:`~hydrogram.Client.run`. Parameters: clients (List of :obj:`~hydrogram.Client`): A list of client objects to run. sequential (``bool``, *optional*): Pass True to run clients sequentially. Defaults to False (run clients concurrently) Example: .. code-block:: python import asyncio from hydrogram import Client, compose async def main(): apps = [Client("account1"), Client("account2"), Client("account3")] ... await compose(apps) asyncio.run(main()) """ifsequential:forcinclients:awaitc.start()else:awaitasyncio.gather(*[c.start()forcinclients])awaitidle()ifsequential:forcinclients:awaitc.stop()else:awaitasyncio.gather(*[c.stop()forcinclients])