diff --git a/.kokoro/presubmit_tests_tasks.cfg b/.kokoro/presubmit_tests_tasks.cfg new file mode 100644 index 000000000000..5cd413436eaf --- /dev/null +++ b/.kokoro/presubmit_tests_tasks.cfg @@ -0,0 +1,15 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +# Download secrets from Cloud Storage. +gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples" + +# Tell the trampoline which build file to use. +env_vars: { + key: "TRAMPOLINE_BUILD_FILE" + value: "github/python-docs-samples/.kokoro/system_tests.sh" +} + +env_vars: { + key: "NOX_SESSION" + value: "tasks and py36 and not appengine" +} diff --git a/.kokoro/system_tests_tasks.cfg b/.kokoro/system_tests_tasks.cfg new file mode 100644 index 000000000000..5cd413436eaf --- /dev/null +++ b/.kokoro/system_tests_tasks.cfg @@ -0,0 +1,15 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +# Download secrets from Cloud Storage. +gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/python-docs-samples" + +# Tell the trampoline which build file to use. +env_vars: { + key: "TRAMPOLINE_BUILD_FILE" + value: "github/python-docs-samples/.kokoro/system_tests.sh" +} + +env_vars: { + key: "NOX_SESSION" + value: "tasks and py36 and not appengine" +} diff --git a/tasks/README.md b/tasks/README.md new file mode 100644 index 000000000000..61ac422cb2ea --- /dev/null +++ b/tasks/README.md @@ -0,0 +1,111 @@ +# Google Cloud Tasks Samples + +[![Open in Cloud Shell][shell_img]][shell_link] + +[shell_img]: http://gstatic.com/cloudssh/images/open-btn.png +[shell_link]: https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/GoogleCloudPlatform/python-docs-samples&page=editor&open_in_editor=appengine/flexible/tasks/README.md + +Sample command-line programs for interacting with the Cloud Tasks API +. + +App Engine queues push tasks to an App Engine HTTP target. This directory +contains both the App Engine app to deploy, as well as the snippets to run +locally to push tasks to it, which could also be called on App Engine. + +`create_app_engine_queue_task.py` is a simple command-line program to create +tasks to be pushed to the App Engine app. + +`main.py` is the main App Engine app. This app serves as an endpoint to receive +App Engine task attempts. + +`app.yaml` configures the App Engine app. + + +## Prerequisites to run locally: + +Please refer to [Setting Up a Python Development Environment](https://cloud.google.com/python/setup). + +## Authentication + +To set up authentication, please refer to our +[authentication getting started guide](https://cloud.google.com/docs/authentication/getting-started). + +## Creating a queue + +To create a queue using the Cloud SDK, use the following gcloud command: + +``` +gcloud beta tasks queues create-app-engine-queue my-appengine-queue +``` + +Note: A newly created queue will route to the default App Engine service and +version unless configured to do otherwise. + +## Deploying the App Engine App + +Deploy the App Engine app with gcloud: + +* To deploy to the Standard environment: + ``` + gcloud app deploy app.yaml + ``` +* To deploy to the Flexible environment: + ``` + gcloud app deploy app.flexible.yaml + ``` + +Verify the index page is serving: + +``` +gcloud app browse +``` + +The App Engine app serves as a target for the push requests. It has an +endpoint `/example_task_handler` that reads the payload (i.e., the request body) +of the HTTP POST request and logs it. The log output can be viewed with: + +``` +gcloud app logs read +``` + +## Run the Sample Using the Command Line + +Set environment variables: + +First, your project ID: + +``` +export PROJECT_ID=my-project-id +``` + +Then the queue ID, as specified at queue creation time. Queue IDs already +created can be listed with `gcloud beta tasks queues list`. + +``` +export QUEUE_ID=my-appengine-queue +``` + +And finally the location ID, which can be discovered with +`gcloud beta tasks queues describe $QUEUE_ID`, with the location embedded in +the "name" value (for instance, if the name is +"projects/my-project/locations/us-central1/queues/my-appengine-queue", then the +location is "us-central1"). + +``` +export LOCATION_ID=us-central1 +``` + +### Using HTTP Push Queues + +Set an environment variable for the endpoint to your task handler. This is an +example url to send requests to the App Engine task handler: +``` +export URL=https://.appspot.com/example_task_handler +``` + +Running the sample will create a task and send the task to the specific URL +endpoint, with a payload specified: + +``` +python create_http_task.py --project=$PROJECT_ID --queue=$QUEUE_ID --location=$LOCATION_ID --url=$URL --payload=hello +``` diff --git a/appengine/flexible/tasks/create_http_task.py b/tasks/create_http_task.py similarity index 100% rename from appengine/flexible/tasks/create_http_task.py rename to tasks/create_http_task.py diff --git a/appengine/flexible/tasks/create_http_task_test.py b/tasks/create_http_task_test.py similarity index 90% rename from appengine/flexible/tasks/create_http_task_test.py rename to tasks/create_http_task_test.py index d452fb771cfd..6acfeaacbdb1 100644 --- a/appengine/flexible/tasks/create_http_task_test.py +++ b/tasks/create_http_task_test.py @@ -21,8 +21,8 @@ TEST_QUEUE_NAME = os.getenv('TEST_QUEUE_NAME', 'my-appengine-queue') -def test_create_task(): - url = 'https://' + TEST_PROJECT_ID + '.appspot.com/example_task_handler' +def test_create_http_task(): + url = 'https://example.appspot.com/example_task_handler' result = create_http_task.create_http_task( TEST_PROJECT_ID, TEST_QUEUE_NAME, TEST_LOCATION, url) assert TEST_QUEUE_NAME in result.name diff --git a/tasks/requirements.txt b/tasks/requirements.txt new file mode 100644 index 000000000000..9aadd8a77475 --- /dev/null +++ b/tasks/requirements.txt @@ -0,0 +1,3 @@ +Flask==1.0.2 +gunicorn==19.9.0 +google-cloud-tasks==0.6.0