无需几秒钟即可在 django 中的异步任务处理程序之间切换。
项目描述
Django 可交换任务
介绍
考虑到您有一个 django 项目在不同的服务器上运行,每个服务器都有自己的异步任务处理程序,这个项目可以帮助您有一种方法来处理任务,同时在后台转换为相应的处理程序。目前支持 Google Cloud Tasks 和 Celery。
代码示例
要进行设置,您需要将以下内容添加到您的 settings.py 文件
DEFAULT_ASYNC_TASKS_HANDLER = env('DEFAULT_ASYNC_TASKS_HANDLER')中,这可以是CELERY或GOOGLE_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 存储库安装