Проблема временного рабочего процесса в python: Рабочий процесс не выполняется в фоновом режиме, невозможно запустить новый блок рабочего процесса, пока не завершится текущий
Я создал рабочий процесс с 4 активностями, которые запускаются одна за другой Используя temporalio, когда мой один рабочий процесс запускается, он не работает в фоновом режиме, Невозможно запустить новый рабочий процесс, пока пока не завершится текущий. Я вызываю этот рабочий процесс из django.
import asyncio
import random
import concurrent
import multiprocessing
from datetime import timedelta
from temporalio.client import Client
from temporalio.worker import Worker
from temporalio import activity, workflow
from temporalio.worker import SharedStateManager, Worker
async def get_client():
client = await Client.connect("localhost:7233")
return client
@activity.defn
async def activity1(params) -> dict:
print("Inside activity 1")
count = 1
while True:
if count == 10000000000:
break
count = count + 1
return params
@activity.defn
async def activity2(params) -> dict:
print("Inside activity 2")
return params
@activity.defn
async def activity3(params) -> dict:
print("Inside activity 3")
return params
@activity.defn
async def activity4(params) -> dict:
print("Inside activity 4")
return params
@workflow.defn
class TestTemporalWorkflow:
@workflow.run
async def run(self, params) -> dict:
response_1 = await workflow.start_activity(
activity1,
params,
start_to_close_timeout=timedelta(seconds=100),
)
response_2 = await workflow.start_activity(
activity2,
response_1,
start_to_close_timeout=timedelta(seconds=100),
)
response_3 = await workflow.start_activity(
activity3,
response_2,
start_to_close_timeout=timedelta(seconds=100),
)
response_4 = await workflow.start_activity(
activity4,
response_3,
start_to_close_timeout=timedelta(seconds=100),
)
async def main(params):
task_queue = "demo-temporal-workflow-queue"
workflows = [TestTemporalWorkflow]
activities = [activity1, activity2, activity3, activity4]
# Start client
client = await get_client()
async with Worker(
client,
task_queue=task_queue,
workflows=workflows,
activities=activities,
activity_executor=concurrent.futures.Executor,
workflow_task_executor=concurrent.futures.ThreadPoolExecutor(100),
shared_state_manager=SharedStateManager.create_from_multiprocessing(
multiprocessing.Manager()),
):
workflow_id = f"{random.randint(555,99999)}"
params = {"test" : "hellow user"}
await client.execute_workflow(
TestTemporalWorkflow.run,
params,
id=workflow_id,
task_queue=task_queue
)
if __name__ == "__main__":
asyncio.run(main({"test" : "test"}))
"""
My workflow is not returning the response, it's going to queue or deadlock and i'm not able to trigger another workflow unit
current workflow is not finished.
"""