taskqueue_service.proto 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  1. syntax = "proto2";
  2. option go_package = "taskqueue";
  3. import "google.golang.org/appengine/internal/datastore/datastore_v3.proto";
  4. package appengine;
  5. message TaskQueueServiceError {
  6. enum ErrorCode {
  7. OK = 0;
  8. UNKNOWN_QUEUE = 1;
  9. TRANSIENT_ERROR = 2;
  10. INTERNAL_ERROR = 3;
  11. TASK_TOO_LARGE = 4;
  12. INVALID_TASK_NAME = 5;
  13. INVALID_QUEUE_NAME = 6;
  14. INVALID_URL = 7;
  15. INVALID_QUEUE_RATE = 8;
  16. PERMISSION_DENIED = 9;
  17. TASK_ALREADY_EXISTS = 10;
  18. TOMBSTONED_TASK = 11;
  19. INVALID_ETA = 12;
  20. INVALID_REQUEST = 13;
  21. UNKNOWN_TASK = 14;
  22. TOMBSTONED_QUEUE = 15;
  23. DUPLICATE_TASK_NAME = 16;
  24. SKIPPED = 17;
  25. TOO_MANY_TASKS = 18;
  26. INVALID_PAYLOAD = 19;
  27. INVALID_RETRY_PARAMETERS = 20;
  28. INVALID_QUEUE_MODE = 21;
  29. ACL_LOOKUP_ERROR = 22;
  30. TRANSACTIONAL_REQUEST_TOO_LARGE = 23;
  31. INCORRECT_CREATOR_NAME = 24;
  32. TASK_LEASE_EXPIRED = 25;
  33. QUEUE_PAUSED = 26;
  34. INVALID_TAG = 27;
  35. // Reserved range for the Datastore error codes.
  36. // Original Datastore error code is shifted by DATASTORE_ERROR offset.
  37. DATASTORE_ERROR = 10000;
  38. }
  39. }
  40. message TaskPayload {
  41. extensions 10 to max;
  42. option message_set_wire_format = true;
  43. }
  44. message TaskQueueRetryParameters {
  45. optional int32 retry_limit = 1;
  46. optional int64 age_limit_sec = 2;
  47. optional double min_backoff_sec = 3 [default = 0.1];
  48. optional double max_backoff_sec = 4 [default = 3600];
  49. optional int32 max_doublings = 5 [default = 16];
  50. }
  51. message TaskQueueAcl {
  52. repeated bytes user_email = 1;
  53. repeated bytes writer_email = 2;
  54. }
  55. message TaskQueueHttpHeader {
  56. required bytes key = 1;
  57. required bytes value = 2;
  58. }
  59. message TaskQueueMode {
  60. enum Mode {
  61. PUSH = 0;
  62. PULL = 1;
  63. }
  64. }
  65. message TaskQueueAddRequest {
  66. required bytes queue_name = 1;
  67. required bytes task_name = 2;
  68. required int64 eta_usec = 3;
  69. enum RequestMethod {
  70. GET = 1;
  71. POST = 2;
  72. HEAD = 3;
  73. PUT = 4;
  74. DELETE = 5;
  75. }
  76. optional RequestMethod method = 5 [default=POST];
  77. optional bytes url = 4;
  78. repeated group Header = 6 {
  79. required bytes key = 7;
  80. required bytes value = 8;
  81. }
  82. optional bytes body = 9 [ctype=CORD];
  83. optional Transaction transaction = 10;
  84. optional bytes app_id = 11;
  85. optional group CronTimetable = 12 {
  86. required bytes schedule = 13;
  87. required bytes timezone = 14;
  88. }
  89. optional bytes description = 15;
  90. optional TaskPayload payload = 16;
  91. optional TaskQueueRetryParameters retry_parameters = 17;
  92. optional TaskQueueMode.Mode mode = 18 [default=PUSH];
  93. optional bytes tag = 19;
  94. }
  95. message TaskQueueAddResponse {
  96. optional bytes chosen_task_name = 1;
  97. }
  98. message TaskQueueBulkAddRequest {
  99. repeated TaskQueueAddRequest add_request = 1;
  100. }
  101. message TaskQueueBulkAddResponse {
  102. repeated group TaskResult = 1 {
  103. required TaskQueueServiceError.ErrorCode result = 2;
  104. optional bytes chosen_task_name = 3;
  105. }
  106. }
  107. message TaskQueueDeleteRequest {
  108. required bytes queue_name = 1;
  109. repeated bytes task_name = 2;
  110. optional bytes app_id = 3;
  111. }
  112. message TaskQueueDeleteResponse {
  113. repeated TaskQueueServiceError.ErrorCode result = 3;
  114. }
  115. message TaskQueueForceRunRequest {
  116. optional bytes app_id = 1;
  117. required bytes queue_name = 2;
  118. required bytes task_name = 3;
  119. }
  120. message TaskQueueForceRunResponse {
  121. required TaskQueueServiceError.ErrorCode result = 3;
  122. }
  123. message TaskQueueUpdateQueueRequest {
  124. optional bytes app_id = 1;
  125. required bytes queue_name = 2;
  126. required double bucket_refill_per_second = 3;
  127. required int32 bucket_capacity = 4;
  128. optional string user_specified_rate = 5;
  129. optional TaskQueueRetryParameters retry_parameters = 6;
  130. optional int32 max_concurrent_requests = 7;
  131. optional TaskQueueMode.Mode mode = 8 [default = PUSH];
  132. optional TaskQueueAcl acl = 9;
  133. repeated TaskQueueHttpHeader header_override = 10;
  134. }
  135. message TaskQueueUpdateQueueResponse {
  136. }
  137. message TaskQueueFetchQueuesRequest {
  138. optional bytes app_id = 1;
  139. required int32 max_rows = 2;
  140. }
  141. message TaskQueueFetchQueuesResponse {
  142. repeated group Queue = 1 {
  143. required bytes queue_name = 2;
  144. required double bucket_refill_per_second = 3;
  145. required double bucket_capacity = 4;
  146. optional string user_specified_rate = 5;
  147. required bool paused = 6 [default=false];
  148. optional TaskQueueRetryParameters retry_parameters = 7;
  149. optional int32 max_concurrent_requests = 8;
  150. optional TaskQueueMode.Mode mode = 9 [default = PUSH];
  151. optional TaskQueueAcl acl = 10;
  152. repeated TaskQueueHttpHeader header_override = 11;
  153. optional string creator_name = 12 [ctype=CORD, default="apphosting"];
  154. }
  155. }
  156. message TaskQueueFetchQueueStatsRequest {
  157. optional bytes app_id = 1;
  158. repeated bytes queue_name = 2;
  159. optional int32 max_num_tasks = 3 [default = 0];
  160. }
  161. message TaskQueueScannerQueueInfo {
  162. required int64 executed_last_minute = 1;
  163. required int64 executed_last_hour = 2;
  164. required double sampling_duration_seconds = 3;
  165. optional int32 requests_in_flight = 4;
  166. optional double enforced_rate = 5;
  167. }
  168. message TaskQueueFetchQueueStatsResponse {
  169. repeated group QueueStats = 1 {
  170. required int32 num_tasks = 2;
  171. required int64 oldest_eta_usec = 3;
  172. optional TaskQueueScannerQueueInfo scanner_info = 4;
  173. }
  174. }
  175. message TaskQueuePauseQueueRequest {
  176. required bytes app_id = 1;
  177. required bytes queue_name = 2;
  178. required bool pause = 3;
  179. }
  180. message TaskQueuePauseQueueResponse {
  181. }
  182. message TaskQueuePurgeQueueRequest {
  183. optional bytes app_id = 1;
  184. required bytes queue_name = 2;
  185. }
  186. message TaskQueuePurgeQueueResponse {
  187. }
  188. message TaskQueueDeleteQueueRequest {
  189. required bytes app_id = 1;
  190. required bytes queue_name = 2;
  191. }
  192. message TaskQueueDeleteQueueResponse {
  193. }
  194. message TaskQueueDeleteGroupRequest {
  195. required bytes app_id = 1;
  196. }
  197. message TaskQueueDeleteGroupResponse {
  198. }
  199. message TaskQueueQueryTasksRequest {
  200. optional bytes app_id = 1;
  201. required bytes queue_name = 2;
  202. optional bytes start_task_name = 3;
  203. optional int64 start_eta_usec = 4;
  204. optional bytes start_tag = 6;
  205. optional int32 max_rows = 5 [default = 1];
  206. }
  207. message TaskQueueQueryTasksResponse {
  208. repeated group Task = 1 {
  209. required bytes task_name = 2;
  210. required int64 eta_usec = 3;
  211. optional bytes url = 4;
  212. enum RequestMethod {
  213. GET = 1;
  214. POST = 2;
  215. HEAD = 3;
  216. PUT = 4;
  217. DELETE = 5;
  218. }
  219. optional RequestMethod method = 5;
  220. optional int32 retry_count = 6 [default=0];
  221. repeated group Header = 7 {
  222. required bytes key = 8;
  223. required bytes value = 9;
  224. }
  225. optional int32 body_size = 10;
  226. optional bytes body = 11 [ctype=CORD];
  227. required int64 creation_time_usec = 12;
  228. optional group CronTimetable = 13 {
  229. required bytes schedule = 14;
  230. required bytes timezone = 15;
  231. }
  232. optional group RunLog = 16 {
  233. required int64 dispatched_usec = 17;
  234. required int64 lag_usec = 18;
  235. required int64 elapsed_usec = 19;
  236. optional int64 response_code = 20;
  237. optional string retry_reason = 27;
  238. }
  239. optional bytes description = 21;
  240. optional TaskPayload payload = 22;
  241. optional TaskQueueRetryParameters retry_parameters = 23;
  242. optional int64 first_try_usec = 24;
  243. optional bytes tag = 25;
  244. optional int32 execution_count = 26 [default=0];
  245. }
  246. }
  247. message TaskQueueFetchTaskRequest {
  248. optional bytes app_id = 1;
  249. required bytes queue_name = 2;
  250. required bytes task_name = 3;
  251. }
  252. message TaskQueueFetchTaskResponse {
  253. required TaskQueueQueryTasksResponse task = 1;
  254. }
  255. message TaskQueueUpdateStorageLimitRequest {
  256. required bytes app_id = 1;
  257. required int64 limit = 2;
  258. }
  259. message TaskQueueUpdateStorageLimitResponse {
  260. required int64 new_limit = 1;
  261. }
  262. message TaskQueueQueryAndOwnTasksRequest {
  263. required bytes queue_name = 1;
  264. required double lease_seconds = 2;
  265. required int64 max_tasks = 3;
  266. optional bool group_by_tag = 4 [default=false];
  267. optional bytes tag = 5;
  268. }
  269. message TaskQueueQueryAndOwnTasksResponse {
  270. repeated group Task = 1 {
  271. required bytes task_name = 2;
  272. required int64 eta_usec = 3;
  273. optional int32 retry_count = 4 [default=0];
  274. optional bytes body = 5 [ctype=CORD];
  275. optional bytes tag = 6;
  276. }
  277. }
  278. message TaskQueueModifyTaskLeaseRequest {
  279. required bytes queue_name = 1;
  280. required bytes task_name = 2;
  281. required int64 eta_usec = 3;
  282. required double lease_seconds = 4;
  283. }
  284. message TaskQueueModifyTaskLeaseResponse {
  285. required int64 updated_eta_usec = 1;
  286. }