【发布时间】:2018-11-17 22:16:24
【问题描述】:
我可能遗漏了一些非常明显的东西,但在我正在从事的项目中,我必须从信息的 CSV 发送许多工作以异步处理,而 Google App Engine 目前的方式是通过他们的新(测试版) Cloud Tasks 机制。
它将接受负载作为任务的一部分,因此我将发送一个 JSON 数组,其中包含每个作业的相关数据...除了指示 "Content-Type: application/json" 标头的唯一方法是在创建任务对象期间.
我正在使用 Google 自己的 cloud-tasks 0.5.0 库。
这是我一直在尝试的,因为这似乎是大多数其他非 cURL HTTP POST 请求接受 Content-Type 标头的方式...
require_once 'vendor/autoload.php';
use Google\Cloud\Tasks\V2beta3\AppEngineHttpQueue;
use Google\Cloud\Tasks\V2beta3\CloudTasksClient;
use Google\Cloud\Tasks\V2beta3\Queue;
use Google\Cloud\Tasks\V2beta3\Task;
<<< ...lots of cruft omitted... >>>
$json_payload = json_encode(
array(
"batch" => $operation_time,
"order" => $csvln[0],
"customer" => $csvln[1],
"email" => $csvln[2],
"salesperson" => $csvln[3]
)
);
//Create each of the tasks in the queue
$options = [
'http' => [
'header' => "Content-type: application/json",
'method' => 'POST',
'content' => $json_payload
]
];
$task = new Task($options);
任何帮助将不胜感激!
【问题讨论】:
-
你有没有得到这个工作?我在将参数传递给每个单独的任务时遇到了同样的问题,并且我发现关于如何发送 json 正文(相对于原始 base64 有效负载字符串)的信息非常少。我假设我可以将整个 json 主体编码为 base64 有效负载,然后在任务处理程序中解析它,但我认为有更好的方法
-
我没有。相反,我推迟了一种策略,似乎谷歌可能会逐步淘汰这些新方法......推送任务。不过,这些都是蛋糕。
-
我知道您找到了解决此问题的解决方法,对吗?你能分享你用来解决这个问题的文档吗?
标签: php google-app-engine google-cloud-platform php-5.5