JerryHu
September 28, 2022, 1:41am
1
Hi all,
I’ve set up the temporal server v1.16.2 and can properly execute workflows via Java SDK or run tctl commands. Somehow python client does not work due to connection problem? Any suggestions on the failure? Thanks!
Using an example from GitHub - temporalio/sdk-python: Temporal Python SDK
Errors are like
File “/home/ubuntu/env/lib/python3.7/site-packages/temporalio/bridge/client.py”, line 74, in connect
await temporalio.bridge.temporal_sdk_bridge.connect_client(config)
RuntimeError: Failed client connect: get_system_info
call error after connection: Status { code: Unknown, message: “transport error”, source: Some(tonic::transport::Error(Transport, hyper::Error(Http2, Error { kind: GoAway(b"", FRAME_SIZE_ERROR, Library) })))}
Best,
Jerry
Hello @JerryHu
To try to reproduce the issue, could you point out, which example you are using?
There are more python examples in this repository GitHub - temporalio/samples-python: Samples for working with the Temporal Python SDK , just in case you don’t know about them
JerryHu
September 28, 2022, 12:56pm
3
Hi @antonio.perez ,
Thanks for replying! I use the sample code from python sdk github page. It errors out at this line
client = await Client.connect(“<our_temporal_elb>:7233”)
RuntimeError: Failed client connect: get_system_info
call error after connection: Status { code: Unknown, message: “transport error”, source: Some(tonic::transport::Error(Transport, hyper::Error(Http2, Error { kind: GoAway(b"", FRAME_SIZE_ERROR, Library) })))}
Seems it’s related to Http2?
import asyncio
from datetime import datetime, timedelta
from temporalio import workflow, activity
from temporalio.client import Client
from temporalio.worker import Worker
@activity.defn
async def say_hello(name: str) -> str:
return f"Hello, {name}!"
@workflow.defn
class SayHello:
@workflow.run
async def run(self, name: str) -> str:
return await workflow.execute_activity(
say_hello, name, schedule_to_close_timeout=timedelta(seconds=5)
)
async def main():
# Create client connected to server at the given address
client = await Client.connect("localhost:7233")
# Run the worker
worker = Worker(client, task_queue="my-task-queue", workflows=[SayHello], activities=[say_hello])
await worker.run()
if __name__ == "__main__":
asyncio.run(main())
JerryHu
September 28, 2022, 2:14pm
4
Figured out. Need to set tls=True to connect as we turned on TLS on server side.
2 Likes