コード例 #1
0
 def _get_settings(self):
     self.settings = st.environ(self.environ).settings.get(
         self.prefix, None)
     if self.settings is None:
         raise SettingErrors("Can not find settings.FLASK!")
     if self.settings.get("name") is None:
         self.settings["name"] = "SwitchTracer"
     self.roles = [i[1:] for i in self.settings.keys() if i.startswith("@")]
     if not self.roles:
         raise SettingErrors("Can not find any ROLEs in settings.FLASK!")
コード例 #2
0
def load_tasks_from_path(packs, reset=False, env=None):
    settings = _get_celery_settings(env)
    package_path = os.path.dirname(packs)
    # print(package_path)
    is_organized = eval(os.environ.get("CELERY_ORGANIZED", "0"))
    if reset or (not is_organized):
        # TODO: RAISE INFO MSG
        print("Info: Insert TaskPackage into sys.path")
        sys.path.append(package_path)
    searching = settings.get("tasks_search_pattern")
    if searching is None:
        raise SettingErrors("No tasks search pattern!")
    # r"^(([_a-zA-Z0-9\.]+\.)?task[_a-zA-Z0-9]*).py$"
    pattern = re.compile(searching)

    def _import(x):
        ret = re.match(pattern, x)
        if ret:
            import_module(ret.group(1))

    if os.path.isdir(packs):
        for i in os.listdir(packs):
            _import(".".join([os.path.split(packs)[-1], i]))
    else:
        for i in os.listdir(package_path):
            _import(i)

    os.environ["CELERY_ORGANIZED"] = "1"
コード例 #3
0
def task_urls_routers(url, records=True, gmap=None, root=None, env=None):
    settings = st.environ(env).settings
    if not (settings.get("DEFAULT_TASKS_PREFIX")
            and settings.get("DEFAULT_TASKS_ROOT")):
        raise SettingErrors("Can not find settings.TASKS refers!")

    temp = re.match(PATTERN, url)
    if temp is None:
        return

    router_dict = temp.groupdict()
    prefix, mprefix, fprefix = router_dict["prefix"], \
                               router_dict["mprefix"], \
                               router_dict["fprefix"] or st.environ(env).settings["DEFAULT_TASKS_PREFIX"]
    root = root or st.environ(env).settings["DEFAULT_TASKS_ROOT"]
    _imported_list = list()
    if mprefix:
        for i in os.listdir(os.path.join(root, *prefix.split('.'))):
            ret = re.match("(%s)\.py" % mprefix, i)
            if ret:
                _imported_list.append(
                    import_module(".".join([prefix, ret.group(1)])))
    else:
        _imported_list.append(import_module(prefix))

    def _import(p):
        for k in filter(lambda x: x.startswith(fprefix), dir(p)):
            task = getattr(p, k)
            gmap[task.name] = pickle.dumps(task)

    if records and hasattr(gmap, "__setitem__"):
        for i in _imported_list:
            _import(i)
コード例 #4
0
 def connect(self,
             purl: dict = None,
             query_dict: dict = None,
             data: dict = None,
             **kwargs):
     self.kwargs = kwargs
     method, url = self.url
     try:
         url = url.format(**(purl or dict()))
     except (IndexError, KeyError):
         raise SettingErrors("Wrong url params from settings.COURIER.")
     sender = getattr(requests, method.lower())
     if sender is None:
         raise SettingErrors("No such Http request method<%s>." % method)
     return self.resp_parser(
         sender(url=url, params=query_dict, data=data or dict()))
コード例 #5
0
ファイル: common.py プロジェクト: IzayoiRin/VirtualVeyonST
 def server_loc(self, key: str):
     try:
         ret = import_from_path(self.settings["SERVERS"][key])
     except IndexError as e:
         raise SettingErrors(e)
     except ImportedErrors as e:
         raise SetupErrors(e)
     return ret
コード例 #6
0
 def __call__(self, role):
     if role not in self.roles:
         raise SettingErrors("Can not find ROLE<%s> in settings.FLASK!" %
                             role)
     role = "@%s" % role
     app = Flask(self.settings["name"])
     app.config.from_mapping(**self.settings[role])
     return app
コード例 #7
0
ファイル: common.py プロジェクト: IzayoiRin/VirtualVeyonST
 def get_settings(self):
     celery_settings = self.settings["CELERY"]
     try:
         rds = celery_settings["Redis"]
         broker = rds["broker_url"]
         backend = rds["result_backend"]
     except KeyError as e:
         raise SettingErrors(e)
     self.broker_url = self.resolute_redis_url(broker)
     self.backend_url = self.resolute_redis_url(backend)
コード例 #8
0
def set_celery_from_conf(capp=None, broker="Redis", env=None, _return=False):
    settings = _get_celery_settings(env)
    broker = settings.get(broker, None)
    if broker is None:
        raise SettingErrors("No such broker!")

    capp = capp or Celery(settings.get("routine_name", "SwitchTracer"))
    capp.conf.broker_url = broker["broker_url"]
    capp.conf.result_backend = broker["result_backend"]
    if _return:
        return capp
コード例 #9
0
 def _get_blue_printer(self):
     fmod = self.settings.get("server") or \
            st.environ(self.environ).settings["SERVERS"]["flask"]
     try:
         self.blue_printers = {
             i: import_from_path("{flask}.{bprinter}".format(
                 flask=fmod, bprinter=i)).bluePrinters
             for i in self.roles
         }
     except Exception as e:
         raise SettingErrors(e)
コード例 #10
0
ファイル: senders.py プロジェクト: IzayoiRin/VirtualVeyonST
 def __new__(mcs, name, bases, kw_attrs):
     if mcs.__is_single or kw_attrs.get("_is_reload", False):
         kw_attrs["VOLUMES"] = kw_attrs.get(
             "_default_global_volumes") or st.VOLUMES
         settings = st.environ(kw_attrs.get("_environ", None)).settings
         if settings.get("DEFAULT_TASKS_URLS") is None:
             raise SettingErrors("Can not find settings.TASKS refers!")
         kw_attrs["_TASKS"] = kw_attrs.get(
             "_default_tasks_urls") or settings["DEFAULT_TASKS_URLS"]
     mcs.__is_single = False
     kw_attrs["_is_reload"] = False
     return type(name, bases, kw_attrs)
コード例 #11
0
    def __init__(self, env=None):
        self.environ = env
        self.settings = st.environ(self.environ).settings.get(
            self.__prefix__, None)
        if self.settings is None:
            raise SettingErrors("Can not find settings.COURIER!")
        # TODO: get redis pool
        self.redis_pool = None

        self.url = self.get_ulr(self.settings.get("master") or self.url_master)
        self.fburl = self.settings.get("seed") or self.url_feedback
        self.kwargs = dict()
コード例 #12
0
 def __init__(self, env):
     if self.default_global_registers_map is None or self.default_global_records_list is None:
         raise KernelWaresSettingsErrors("No VOLUMES has been Linked!")
     setattr(self, "__REGISTERS", self.default_global_registers_map)
     setattr(self, "__RECORDS", self.default_global_records_list)
     settings = st.environ(env or self.__environ__).settings
     self.__dynamic_pool__ = self.__dynamic_pool__ or settings.get(
         "DEFAULT_DYNAMIC_POOL_INFO")
     if not isinstance(self.__dynamic_pool__, dict):
         raise SettingErrors(
             "Can Not found dynamic pool info of multiprocessing in settings.RESOLUTER"
         )
     self.max_pool = self.__max_pool__ or settings.get("DEFAULT_MAX_POOL")
コード例 #13
0
 def __getattribute__(self, item):
     try:
         return super(CourierConfigure, self).__getattribute__(item)
     except AttributeError:
         raise SettingErrors("Could not find key<%s> in conf" % item)
コード例 #14
0
ファイル: common.py プロジェクト: IzayoiRin/VirtualVeyonST
 def resolute_redis_url(self, url):
     ret = re.match(self.celery_url_pattern, url)
     if ret is None:
         raise SettingErrors("Illegal Redis url in settings!")
     return ret.groupdict()
コード例 #15
0
ファイル: basements.py プロジェクト: IzayoiRin/VirtualVeyonST
 def __getitem__(self, key):
     v = self._settings.get(key, None)
     if v is None:
         raise SettingErrors("can Not found '%s' in settings" % key)
     return v
コード例 #16
0
ファイル: server.py プロジェクト: IzayoiRin/VirtualVeyonST
 def settings(self):
     settings = st.environ(self.environ).settings.get(self.prefix)
     if settings is None:
         raise SettingErrors("Can not find settings.COURIER!")
     return settings
コード例 #17
0
 def register_bprinter(self, app, role):
     if role not in self.roles:
         raise SettingErrors("Can not find ROLE<%s> in settings.FLASK!" %
                             role)
     for bp in self.blue_printers[role]:
         app.register_blueprint(bp)
コード例 #18
0
def _get_celery_settings(env):
    settings = st.environ(env).settings.get("CELERY", None)
    if settings is None:
        raise SettingErrors("Can not find settings.CELERY!")
    return settings