我从旧项目中了解并喜欢_NSGetExecutablePath
。现在我想在基于std::string appFilePath;
CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef resourcesURL = CFBundleCopyBundleURL(mainBundle);
CFStringRef cfStr = CFURLCopyFileSystemPath(resourcesURL, kCFURLPOSIXPathStyle);
CFRelease(resourcesURL);
char bundlePathStr[PATH_MAX];
CFStringGetCString(cfStr, bundlePathStr, FILENAME_MAX, kCFStringEncodingASCII);
CFRelease(cfStr);
const std::string bundlePath(bundlePathStr);
uint32_t pathBufSize = 0;
_NSGetExecutablePath(NULL, &pathBufSize);
pathBufSize += 1024; // for expansion to abs path
char* appPath = new char[pathBufSize + 1]();
if (_NSGetExecutablePath(appPath, &pathBufSize) == 0 && realpath(std::string(appPath).c_str(), appPath) != NULL) // alternatively -- if(proc_pidpath(getpid(), topLevelAppPath, pathBufSize) > 0)
{
const std::string appPathBkp(appPath);
const std::string appDirPath(dirname(appPath));
if (appDirPath == bundlePath) // ==> standalone executable
appFilePath = appPathBkp;
else // ==> bundled app
appFilePath = bundlePath;
}
delete[] appPath;
return appFilePath;
的项目中使用它。
我的最终解决方案将使我能够对每个方法级别进行速率限制。所以不同的费率适用于帖子而不是get方法。 但是如果我可以在每个资源(甚至每个命名空间)级别上定义限制,我会很高兴。 重要的是每个资源都需要自己的速率限制。
我的第一次尝试是使用flask-limiter
注释方法。但这完全被忽略了。
接下来尝试而不是在命名空间本身上使用它:
flask-restplus
嗯,也不起作用。但
@limiter.limit("1 per Minute")
做的事情。但是留下了一个问题:我只能为每个应用定义一个限制器。所以我只能对我的所有命名空间应用一个限制规则。
关于如何让ns = api.namespace('something',
description='Operations related to maps and positions on a map',
decorators = [limiter.limit("1 Per Minute")]
)
接受传递给限制器装饰器的参数的任何想法?
或者是否有更好的方法来管理我刚才看不到的烧瓶中的限速?