# 限制

> Understand the API rate limits, data size limits, and other constraints for Cloud Code modules.

Cloud Code 模块对您可以处理的数据量有限制。

## Cloud Code API##cloud-code-api

* Cloud Code Client API 服务将每个玩家限制为每分钟 12,000 个请求。
* Cloud Code Admin API 服务将每个服务帐户限制为每分钟 120 个请求。
* Admin API 的速率限制值较小，因此不要按玩家调用 Admin API。

## Cloud Code C# 模块##cloud-code-c-modules

* 包含模块的 .ccm 文件的大小不能超过 10 MB。
* 项目中所有 .ccm 文件的总大小不能超过 128 Mb。
* 执行模块时响应正文（模块的输出）的总大小不能超过 2 MiB。
* 项目中所有环境的模块数量不能超过 20 个。
* 模块函数的执行时间不能超过 15 秒。如果函数超过此时间限制，则进程将被终止。
* 一个模块最多可以有 10 个标签，每个标签键和标签值允许的最大字符数为 128。
* 如果一个模块在过去 15 分钟内没有收到任何流量，可能遇到了冷启动延迟。对该模块的所有后续调用会更快。
* `async void` 模式会导致错误。始终返回 `Task` 或 `Task<T>`。请参阅官方 [Microsoft 文档](https://learn.microsoft.com/en-us/archive/msdn-magazine/2013/march/async-await-best-practices-in-asynchronous-programming)以了解有关异步编程的最佳做法。
* Cloud Code 不支持 Cloud Code 函数的静态方法。

### 模块在调用之间的持久性##module-persistence-between-invocations

无法保证模块状态在调用之间保持不变。模块可能会在不同的工作线程上重新加载，因此您不能总是依赖跨模块函数调用的共享状态。但是，在模块保持加载状态时，静态变量和单例依赖项会在调用之间共享。

您可以利用这种行为，将数据缓存在静态变量或单例依赖项中，以减少需要从外部服务获取的数据量。不要使用此模块行为来保存数据，尤其是需要对所有玩家保持一致的数据。

### 依赖项注入##dependency-injection

* 不要依赖模块函数调用之间的共享状态，因为当有多个工作线程时，不能保证 API 调用每次都落在同一个工作线程上。
* 如果 Cloud Code 的某个工作线程超出了 256 MB 的内存限制，则该工作线程最终会崩溃。
* `ICloudCodeSetup` 配置只能由一个模块中的单个类实现。

### 推送消息##push-messages

* 通过 WebSocket 连接发送的消息限制为 10 KB。

### UGS CLI 和编辑器部署##ugs-cli-and-editor-deployment

* UGS CLI 和 Deployment（部署）窗口无法部署包含在同一项目中的多个模块。
* UGS CLI 和 Deployment（部署）窗口不支持模块标签并会忽略标签。

### 编辑器绑定##editor-bindings

* 生成的绑定不区分必需参数和可选参数。
* 不支持元组作为参数或返回值。

## Cloud Code 与其他 Unity 服务的集成##cloud-code-integration-with-other-unity-services

* 所有 Unity 服务都有基于每个玩家的速率限制以防止 API 过度使用。Cloud Code 速率限制在游戏和服务器代码之间共享。例如，如果您同时在 Cloud Code 和游戏中使用 Economy，则可能会收到意外的速率限制错误。在调试这些错误时，请务必考虑到这两种使用情况。
* 模块只能访问您部署到保存模块的同一[环境](/services/service-environments.md)中的其他 UGS 资源。模块无法访问任何其他环境中的服务。

要详细了解如何与 Cloud Code 集成，请参阅[与其他 Unity 服务集成](../how-to-guides/unity-services-integration)页面。
