在Django视图中有效使用ThreadPoolExecutor

时间:2018-08-12 17:05:01

标签: python django multithreading

我的目标是使用Index.js将一些长时间运行的任务卸载到异步线程中。该任务是作为Django视图的一部分触发的,但是工作似乎并不是异步发生的(响应挂起大约10秒钟,即整个任务在返回之前完成)。我实际上是否必须在视图中放置`const google = require('googleapis'); //const { auth } = require('google-auth-library'); exports.goWithTheDataFlow = (event, callback) => { const file = event.data; const context = event.context; console.log(`Event ${context.eventId}`); console.log(` Event Type: ${context.eventType}`); console.log(` Bucket: ${file.bucket}`); console.log(` File: ${file.name}`); console.log(` Metageneration: ${file.metageneration}`); console.log(` Created: ${file.timeCreated}`); console.log(` Updated: ${file.updated}`); // console.log(err); //console.log(projectId); //console.log(authClient); google.auth.getApplicationDefault(function (err, authClient, projectId) { if (err) { throw err; } console.log(err) console.log(projectId); const dataflow = google.dataflow({ version: 'v1b3', auth: authClient }); console.log(`gs://${file.bucket}/${file.name}`); dataflow.projects.templates.create({ projectId: projectId, resource: { parameters: { inputFile: `gs://${file.bucket}/${file.name}`, output_Table: 'titanium-gamma-212906:np_cf_1.cf1', //bigQueryLoadingTemporaryDirectory: 'gs://test-bucket-np' }, jobName: 'json-bq1', gcsPath: 'gs://dataflow-templates/latest/GCS_Text_to_BigQuery', //jobName: 'json-bq1', //gcsPath: 'gs://dataflow-templates/latest/GCS_Text_to_BigQuery', //output_Table: 'titanium-gamma-212906:np_cf_1.cf1', //javascriptTextTransformFunctionName: 'transform', //bigQueryLoadingTemporaryDirectory: 'gs://test-bucket-np' } }, function(err, response) { if (err) { console.error("problem running dataflow template, error was: ", err); } console.log("Dataflow template response: ", response); callback(); }); }); callback(); };` 代码?为什么?我不应该能够做到这一点(我目前的做法):

"name": "sample-cloud-storage",
  "version": "0.0.1",
  "dependencies": {
    "googleapis": "24.0.0"
  }
}

我知道,如果它真的很复杂,我应该安装Celery之类的东西,但是我现在正尝试使它们轻巧。

0 个答案:

没有答案