Skip to main content

无需几秒钟即可在 django 中的异步任务处理程序之间切换。

项目描述

Django 可交换任务

介绍

考虑到您有一个 django 项目在不同的服务器上运行,每个服务器都有自己的异步任务处理程序,这个项目可以帮助您有一种方法来处理任务,同时在后台转换为相应的处理程序。目前支持 Google Cloud Tasks 和 Celery。

代码示例

要进行设置,您需要将以下内容添加到您的 settings.py 文件 DEFAULT_ASYNC_TASKS_HANDLER = env('DEFAULT_ASYNC_TASKS_HANDLER') 中,这可以是CELERYGOOGLE_CLOUD_TASKS.

如果您使用 celery,请记住设置其他设置,例如CELERY_BROKER_URL, CELERY_RESULT_BACKEND, CELERY_ACCEPT_CONTENT, CELERY_TASK_SERIALIZER, CELERY_RESULT_SERIALIZER,CELERY_TIMEZONE

对于谷歌云任务记得设置以下设置GOOGLE_CLOUD_PROJECT_ID,,GOOGLE_CLOUD_TASKS_LOCATION_NAMEGOOGLE_APPLICATION_CREDENTIALS

将视图添加到您的项目 urls.py 文件中,如下所示

from django.urls import path, include
urlpatterns = [
          ...
          path('tasks/', include('django_swappable_tasks.urls')),    
          ...    
]

假设您有以下任务

from myproject.celery_app import app

@app.task
def my_blocking_task(name, age):
      import time
      import random
      sleep_seconds = random.randint(20, 45)
      time.sleep(sleep_seconds)
      print("Hello {}, your age is {}".format(name, age)

要异步处理任务,请执行以下操作

from django_swappable_tasks.utils import process_task_asynchronously
from my project.tasks import my_blocking_task
task_kwargs = {"name": "John Doe", "age" : 18}
process_task_asynchronously(my_blocking_task, "google_default_queue", task_args=[], task_kwargs= task_kwargs)

安装

要安装包 pip install django_swappable_tasks 你也可以直接从GitHub 存储库安装

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

django_swappable_tasks-0.1.16.tar.gz (4.9 kB 查看哈希)

已上传 source