{"id":20904308,"url":"https://github.com/dariofad/grpc_py_go_example","last_synced_at":"2026-05-02T23:31:27.766Z","repository":{"id":158835737,"uuid":"466487404","full_name":"dariofad/grpc_py_go_example","owner":"dariofad","description":"Calling Go from Python via gRPC (example). TLS multi support.","archived":false,"fork":false,"pushed_at":"2023-02-24T14:08:37.000Z","size":20,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-26T23:34:25.764Z","etag":null,"topics":["go","grpc","python3","tls"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dariofad.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-03-05T15:11:41.000Z","updated_at":"2022-05-20T13:52:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"f210fe77-9eff-476f-ae5c-c3031ed9f5d1","html_url":"https://github.com/dariofad/grpc_py_go_example","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dariofad/grpc_py_go_example","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dariofad%2Fgrpc_py_go_example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dariofad%2Fgrpc_py_go_example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dariofad%2Fgrpc_py_go_example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dariofad%2Fgrpc_py_go_example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dariofad","download_url":"https://codeload.github.com/dariofad/grpc_py_go_example/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dariofad%2Fgrpc_py_go_example/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32553396,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T22:28:24.418Z","status":"ssl_error","status_checked_at":"2026-05-02T22:28:14.225Z","response_time":132,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","grpc","python3","tls"],"created_at":"2024-11-18T13:16:40.582Z","updated_at":"2026-05-02T23:31:27.742Z","avatar_url":"https://github.com/dariofad.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Calling Go from Python via gRPC\n\nThis repo is an example to show how to make remote procedure calls via\ngRPC between Python and Go. TLS (multi) is used to secure the network\ncommunication.\n\nRead [this\narticle](https://dariofad.github.io/2022/05/20/Calling_go_from_python_via_grpc.html)\nfor a complete walk-through.\n\n## Quickstart\n\n+ install `direnv` as a shell extension\n+ run `direnv allow`\n+ install `Python` and `Go` (1.18)\n+ run `make setup`\n+ open two terminal windows and run respectively:\n  - `make server`\n  - `make client`\n+ run `make stop` to shutdown the server\n+ run `make clean` to remove the installed binaries\n\n### The example\n\nBasic explanation. Imagine you have a web mapping platform like Google\nMaps, you may have some satellites scanning the Earth and storing the\ndata on a server, and clients performing some queries to the server to\nget the view of a location. For simplicity, assume you already have a\n80x32 (width, height) 2D map of the Earth stored on the server. The\ngoal is to support queries to get the image associated with the `xy`\ncoordinate of a location, and also queries to get the view associated\nwith a broader rectangular area delimited by the `xy` coordinates\nassociated with its bottom-left and top-right corners. Also, you may\nwant to encrypt the communication between client and server to counter\neavesdropping and ensure no third-parties are able to perform MITM\nattacks (i.e., like replacing the image associated with a coordinate).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdariofad%2Fgrpc_py_go_example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdariofad%2Fgrpc_py_go_example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdariofad%2Fgrpc_py_go_example/lists"}