|  |  |  | 
|---|
|  |  |  | f.write(response.content) | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | async def workflow(self, token: str, user_id: int,  inputs: dict): | 
|---|
|  |  |  |  | 
|---|
|  |  |  | target_url = f"{self.base_url}/v1/workflows/run" | 
|---|
|  |  |  | data = { | 
|---|
|  |  |  | "inputs": inputs, | 
|---|
|  |  |  | "response_mode": "streaming", | 
|---|
|  |  |  | "user": str(user_id), | 
|---|
|  |  |  | "files":[] | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | async with httpx.AsyncClient(timeout=1800) as client: | 
|---|
|  |  |  | headers = { | 
|---|
|  |  |  | 'Content-Type': 'application/json', | 
|---|
|  |  |  | 'Authorization': f'Bearer {token}' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | async with client.stream("POST", target_url, data=json.dumps(data), headers=headers) as response: | 
|---|
|  |  |  | if response.status_code == 200: | 
|---|
|  |  |  | try: | 
|---|
|  |  |  | async for answer in response.aiter_text(): | 
|---|
|  |  |  | # print(f"response of ragflow chat: {answer}") | 
|---|
|  |  |  | yield answer | 
|---|
|  |  |  | except GeneratorExit as e: | 
|---|
|  |  |  | print(e) | 
|---|
|  |  |  | return | 
|---|
|  |  |  | else: | 
|---|
|  |  |  | yield f"Error: {response.status_code}" | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if __name__ == "__main__": | 
|---|