Пример #1
0
    def start(self):
        """ Post-fork initialization.

        This is mainly done here for the future possibility that we'll be able to run mules post-fork without exec()ing. In a programmed mule it could be done at __init__ time.
        """
        if self.stack._is_mule:
            if not uwsgi.in_farm():
                raise RuntimeError(
                    'Mule %s is not in a farm! Set `farm = <pool_name>:%s` in uWSGI configuration'
                    % (uwsgi.mule_id(), ','.join(
                        map(
                            str,
                            range(
                                1,
                                len([
                                    x for x in self.stack._configured_mules
                                    if x.endswith('galaxy/main.py')
                                ]) + 1)))))
            elif len(self.stack._farms) > 1:
                raise RuntimeError(
                    f'Mule {uwsgi.mule_id()} is in multiple farms! This configuration is not supported due to locking issues'
                )
            # only mules receive messages so don't bother starting the dispatcher if we're not a mule (although
            # currently it doesn't have any registered handlers and so wouldn't start anyway)
            super().start()
Пример #2
0
 def __call__(self):
     if uwsgi.mule_id() == 0:
         return
     if not uwsgi.in_farm(self.farm):
         return
     while True:
         message = uwsgi.farm_get_msg()
         if message:
             self.f(message)
Пример #3
0
    def start(self):
        """ Post-fork initialization.

        This is mainly done here for the future possibility that we'll be able to run mules post-fork without exec()ing. In a programmed mule it could be done at __init__ time.
        """
        if self.stack._is_mule:
            if not uwsgi.in_farm():
                raise RuntimeError('Mule %s is not in a farm! Set `farm = <pool_name>:%s` in uWSGI configuration'
                                   % (uwsgi.mule_id(),
                                      ','.join(map(str, range(1, len([x for x in self.stack._configured_mules if x.endswith('galaxy/main.py')]) + 1)))))
            elif len(self.stack._farms) > 1:
                raise RuntimeError('Mule %s is in multiple farms! This configuration is not supported due to locking issues' % uwsgi.mule_id())
            # only mules receive messages so don't bother starting the dispatcher if we're not a mule (although
            # currently it doesn't have any registered handlers and so wouldn't start anyway)
            super(UWSGIFarmMessageTransport, self).start()