【发布时间】:2019-10-23 02:46:21
【问题描述】:
我有一个 Django 服务,它注册大量客户端并呈现包含计时器(比如说 800 秒)的有效负载,之后客户端应该被服务暂停(在 MongoDB 中将状态注册为暂停)
我正在使用 rabbitmq 作为代理运行 celery,如下所示:
芹菜/tasks.py `
@app.task(bind=True, name='suspend_nf')
def suspend_nf(pk):
collection.update_one({'instanceId': str(pk)},
{'$set': {'nfStatus': 'SUSPENDED'}})
`
并在 django 视图中调用任务,例如:
api/views.py `
def put(self, request, pk):
now = datetime.datetime.now(tz=pytz.timezone(TIME_ZONE))
timer = now + datetime.timedelta(seconds=response_data["heartBeatTimer"])
suspend_nf.apply_async(eta=timer)
response = Response(data=response_data, status=status.HTTP_202_ACCEPTED)
response['Location'] = str(request.build_absolute_uri())
`
我在这里错过了什么?
【问题讨论】:
标签: django mongodb django-rest-framework celery scheduled-tasks