Облачный код parse.com, фоновый вызов задания

Как я могу вызвать фоновое задание синтаксического анализа после сохранения?

Parse.Cloud.afterSave("test object", function(request) {
  // I want to call a background job HERE 
});

Он хочет запустить это фоновое задание

Parse.Cloud.job("test job", function(request, status) {
  // save all objects (huge save)
});

Если я не могу сделать это в облачном коде main.js, могу ли я вызвать фоновое задание на стороне клиента (JavaScript)?

Спасибо,


person james075    schedule 02.02.2014    source источник


Ответы (1)


По-видимому, пока нет способа сделать это с помощью вызова API javascript. Для этого я использую REST API.

Для начала, если вы никогда не работали с REST, вот что мне было очень полезно для отладки: https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo Позже вы вызовете функцию https://parse.com/docs/js/symbols/Parse.Cloud.HTTPOptions.html из облачного кода.

Что вам нужно сделать, это установить следующее:

url: https://api.parse.com/1/jobs/[your test job] (возможно, вам нужно закодировать пробел в %20, но я бы рекомендовал начинать без пробелов

метод: POST

заголовок запроса:

X-Parse-Application-Id: [your app id]
X-Parse-Master-Key: [your master key] //([find this here by selecting your app in the dropdown][3])
Content-Type: application/json

полезная нагрузка: {} //(это будут ваши входные данные, если вам нужно

Таким образом, вы можете запустить фоновое задание, но я все еще не могу найти способ его запланировать. Надеюсь, это поможет!

person Julien Altieri    schedule 17.02.2014
comment
Блестящий пример, спасибо. Чтобы запланировать его... на данный момент лучше всего иметь процесс (скажем, hourlyProcess), который запускается, скажем, каждый час. В YourTestJob на самом деле не выполняйте работу: просто установите флажок, например, сделайте это в течение следующего часа, 6 часов или как вам угодно. попросите hourlyProcess поднять эти флаги и выполнить работу. - person Fattie; 03.06.2014
comment
Это выглядит интересно parse.com/docs/js/symbols/Parse .Cloud.JobRequest.html, но я не могу понять, как его использовать. - person Simon; 23.09.2014
comment
JobRequest — это просто часть request определения задания облачного кода. Parse.Cloud.job('myJob', function (request, status) { /* job goes here */ } ); - person Uxonith; 02.12.2014
comment
Это безопасно? Что мешает другому сделать это? - person SuperUberDuper; 13.04.2015
comment
@SuperUberDuper Я опоздал на SuperUberDuper, но требование главного ключа — это то, что мешает другим людям сделать это. Мастер-ключ не должен появляться ни в одном клиентском коде, это закрытый ключ с полным доступом к вашему серверу. Требование к мастер-ключу также объясняет, почему он не отображается ни в одном клиентском SDK. Если вы действительно хотите иметь возможность запускать фоновые задания из своего облачного кода, вы можете добавить функцию, которая использует от Parse.Cloud.httpRequest до [yourServerUrl]/jobs/[yourJobName] с заголовками выше и любыми параметрами, которые вам нужны в теле. - person Jake T.; 16.03.2018
comment
Если вы делаете тот httpRequest, о котором я упоминал, убедитесь, что у вас есть надлежащая аутентификация и что ее нельзя использовать злонамеренно. т.е. не заключайте его в собственную функцию облачного кода, где вы говорите, что передаете параметры и имя задания в функцию облачного кода, которая запускает задание с переданными параметрами, так как тогда любой клиент может его запустить. Плотно заверните. Тем не менее, вероятно, не рекомендуется, просто возможно. - person Jake T.; 16.03.2018