我希望目前避免使用芹菜。在 Starlette 的文档中,他们提供了两种添加后台任务的方法:
通过石墨烯:https ://www.starlette.io/graphql/
class Query(graphene.ObjectType):
user_agent = graphene.String()
def resolve_user_agent(self, info):
"""
Return the User-Agent of the incoming request.
"""
user_agent = request.headers.get("User-Agent", "<unknown>")
background = info.context["background"]
background.add_task(log_user_agent, user_agent=user_agent)
return user_agent
通过 JSON 响应:https ://www.starlette.io/background/
async def signup(request):
data = await request.json()
username = data['username']
email = data['email']
task = BackgroundTask(send_welcome_email, to_address=email)
message = {'status': 'Signup successful'}
return JSONResponse(message, background=task)
有谁知道用 Ariadne 在 Starlette 的背景中添加任务的方法?我无法在解析器中返回 JSONResponse,也无权访问 info.context["background"]。我唯一附加到我的上下文的是我的请求对象。