Skip to content

Commit 042f934

Browse files
authored
Merging dev to master (#115)
* Add support for grpcMaxMessageLength command line argument * Pin the dependencies and set the version to 2.0.0 alpha 2 dev * Downgrade version to 1.0
1 parent b50f42e commit 042f934

File tree

11 files changed

+650
-35
lines changed

11 files changed

+650
-35
lines changed

azure/worker/__init__.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22
from . import dispatcher
33

44

5-
async def start_async(host, port, worker_id, request_id):
5+
async def start_async(host, port, worker_id, request_id, grpc_max_msg_len):
66
disp = await dispatcher.Dispatcher.connect(
77
host, port, worker_id, request_id,
8-
connect_timeout=5.0)
8+
connect_timeout=5.0, max_msg_len=grpc_max_msg_len)
99

1010
await disp.dispatch_forever()
1111

1212

13-
def start(host: str, port: int, worker_id: str, request_id: str):
14-
return aio_compat.run(start_async(host, port, worker_id, request_id))
13+
def start(host: str, port: int, worker_id: str, request_id: str,
14+
grpc_max_msg_len: int):
15+
return aio_compat.run(start_async(
16+
host, port, worker_id, request_id, grpc_max_msg_len))

azure/worker/bindings/http.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ def to_proto(cls, obj: typing.Any, *,
9797
http=protos.RpcHttp(
9898
status_code=str(status),
9999
headers=headers,
100-
is_raw=True,
100+
enable_content_negotiation=False,
101101
body=body))
102102

103103
raise NotImplementedError

azure/worker/dispatcher.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class Dispatcher(metaclass=DispatcherMeta):
3535
_GRPC_STOP_RESPONSE = object()
3636

3737
def __init__(self, loop, host, port, worker_id, request_id,
38-
grpc_connect_timeout):
38+
grpc_connect_timeout, grpc_max_msg_len):
3939
self._loop = loop
4040
self._host = host
4141
self._port = port
@@ -56,6 +56,7 @@ def __init__(self, loop, host, port, worker_id, request_id,
5656
max_workers=1)
5757

5858
self._grpc_connect_timeout = grpc_connect_timeout
59+
self._grpc_max_msg_len = grpc_max_msg_len
5960
self._grpc_resp_queue: queue.Queue = queue.Queue()
6061
self._grpc_connected_fut = loop.create_future()
6162
self._grpc_thread = threading.Thread(
@@ -65,9 +66,10 @@ def __init__(self, loop, host, port, worker_id, request_id,
6566

6667
@classmethod
6768
async def connect(cls, host, port, worker_id, request_id,
68-
connect_timeout):
69+
connect_timeout, max_msg_len=None):
6970
loop = asyncio._get_running_loop()
70-
disp = cls(loop, host, port, worker_id, request_id, connect_timeout)
71+
disp = cls(loop, host, port, worker_id, request_id,
72+
connect_timeout, max_msg_len)
7173
disp._grpc_thread.start()
7274
await disp._grpc_connected_fut
7375
return disp
@@ -319,7 +321,15 @@ def __run_sync_func(self, invocation_id, func, params):
319321
_invocation_id_local.v = None
320322

321323
def __poll_grpc(self):
322-
channel = grpc.insecure_channel(f'{self._host}:{self._port}')
324+
options = []
325+
if self._grpc_max_msg_len:
326+
options.append(('grpc.max_receive_message_length',
327+
self._grpc_max_msg_len))
328+
options.append(('grpc.max_send_message_length',
329+
self._grpc_max_msg_len))
330+
331+
channel = grpc.insecure_channel(
332+
f'{self._host}:{self._port}', options)
323333

324334
try:
325335
grpc.channel_ready_future(channel).result(

azure/worker/protos/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1+
/_src
12
*_pb2.py
23
*_pb2_grpc.py
Lines changed: 288 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,288 @@
1+
## Ignore Visual Studio temporary files, build results, and
2+
## files generated by popular Visual Studio add-ons.
3+
##
4+
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5+
6+
# User-specific files
7+
*.suo
8+
*.user
9+
*.userosscache
10+
*.sln.docstates
11+
12+
# User-specific files (MonoDevelop/Xamarin Studio)
13+
*.userprefs
14+
15+
# Build results
16+
[Dd]ebug/
17+
[Dd]ebugPublic/
18+
[Rr]elease/
19+
[Rr]eleases/
20+
x64/
21+
x86/
22+
bld/
23+
[Bb]in/
24+
[Oo]bj/
25+
[Ll]og/
26+
27+
# Visual Studio 2015 cache/options directory
28+
.vs/
29+
# Uncomment if you have tasks that create the project's static files in wwwroot
30+
#wwwroot/
31+
32+
# MSTest test Results
33+
[Tt]est[Rr]esult*/
34+
[Bb]uild[Ll]og.*
35+
36+
# NUNIT
37+
*.VisualState.xml
38+
TestResult.xml
39+
40+
# Build Results of an ATL Project
41+
[Dd]ebugPS/
42+
[Rr]eleasePS/
43+
dlldata.c
44+
45+
# .NET Core
46+
project.lock.json
47+
project.fragment.lock.json
48+
artifacts/
49+
**/Properties/launchSettings.json
50+
51+
*_i.c
52+
*_p.c
53+
*_i.h
54+
*.ilk
55+
*.meta
56+
*.obj
57+
*.pch
58+
*.pdb
59+
*.pgc
60+
*.pgd
61+
*.rsp
62+
*.sbr
63+
*.tlb
64+
*.tli
65+
*.tlh
66+
*.tmp
67+
*.tmp_proj
68+
*.log
69+
*.vspscc
70+
*.vssscc
71+
.builds
72+
*.pidb
73+
*.svclog
74+
*.scc
75+
76+
# Chutzpah Test files
77+
_Chutzpah*
78+
79+
# Visual C++ cache files
80+
ipch/
81+
*.aps
82+
*.ncb
83+
*.opendb
84+
*.opensdf
85+
*.sdf
86+
*.cachefile
87+
*.VC.db
88+
*.VC.VC.opendb
89+
90+
# Visual Studio profiler
91+
*.psess
92+
*.vsp
93+
*.vspx
94+
*.sap
95+
96+
# TFS 2012 Local Workspace
97+
$tf/
98+
99+
# Guidance Automation Toolkit
100+
*.gpState
101+
102+
# ReSharper is a .NET coding add-in
103+
_ReSharper*/
104+
*.[Rr]e[Ss]harper
105+
*.DotSettings.user
106+
107+
# JustCode is a .NET coding add-in
108+
.JustCode
109+
110+
# TeamCity is a build add-in
111+
_TeamCity*
112+
113+
# DotCover is a Code Coverage Tool
114+
*.dotCover
115+
116+
# Visual Studio code coverage results
117+
*.coverage
118+
*.coveragexml
119+
120+
# NCrunch
121+
_NCrunch_*
122+
.*crunch*.local.xml
123+
nCrunchTemp_*
124+
125+
# MightyMoose
126+
*.mm.*
127+
AutoTest.Net/
128+
129+
# Web workbench (sass)
130+
.sass-cache/
131+
132+
# Installshield output folder
133+
[Ee]xpress/
134+
135+
# DocProject is a documentation generator add-in
136+
DocProject/buildhelp/
137+
DocProject/Help/*.HxT
138+
DocProject/Help/*.HxC
139+
DocProject/Help/*.hhc
140+
DocProject/Help/*.hhk
141+
DocProject/Help/*.hhp
142+
DocProject/Help/Html2
143+
DocProject/Help/html
144+
145+
# Click-Once directory
146+
publish/
147+
148+
# Publish Web Output
149+
*.[Pp]ublish.xml
150+
*.azurePubxml
151+
# TODO: Comment the next line if you want to checkin your web deploy settings
152+
# but database connection strings (with potential passwords) will be unencrypted
153+
*.pubxml
154+
*.publishproj
155+
156+
# Microsoft Azure Web App publish settings. Comment the next line if you want to
157+
# checkin your Azure Web App publish settings, but sensitive information contained
158+
# in these scripts will be unencrypted
159+
PublishScripts/
160+
161+
# NuGet Packages
162+
*.nupkg
163+
# The packages folder can be ignored because of Package Restore
164+
**/packages/*
165+
# except build/, which is used as an MSBuild target.
166+
!**/packages/build/
167+
# Uncomment if necessary however generally it will be regenerated when needed
168+
#!**/packages/repositories.config
169+
# NuGet v3's project.json files produces more ignorable files
170+
*.nuget.props
171+
*.nuget.targets
172+
173+
# Microsoft Azure Build Output
174+
csx/
175+
*.build.csdef
176+
177+
# Microsoft Azure Emulator
178+
ecf/
179+
rcf/
180+
181+
# Windows Store app package directories and files
182+
AppPackages/
183+
BundleArtifacts/
184+
Package.StoreAssociation.xml
185+
_pkginfo.txt
186+
187+
# Visual Studio cache files
188+
# files ending in .cache can be ignored
189+
*.[Cc]ache
190+
# but keep track of directories ending in .cache
191+
!*.[Cc]ache/
192+
193+
# Others
194+
ClientBin/
195+
~$*
196+
*~
197+
*.dbmdl
198+
*.dbproj.schemaview
199+
*.jfm
200+
*.pfx
201+
*.publishsettings
202+
orleans.codegen.cs
203+
204+
# Since there are multiple workflows, uncomment next line to ignore bower_components
205+
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
206+
#bower_components/
207+
208+
# RIA/Silverlight projects
209+
Generated_Code/
210+
211+
# Backup & report files from converting an old project file
212+
# to a newer Visual Studio version. Backup files are not needed,
213+
# because we have git ;-)
214+
_UpgradeReport_Files/
215+
Backup*/
216+
UpgradeLog*.XML
217+
UpgradeLog*.htm
218+
219+
# SQL Server files
220+
*.mdf
221+
*.ldf
222+
*.ndf
223+
224+
# Business Intelligence projects
225+
*.rdl.data
226+
*.bim.layout
227+
*.bim_*.settings
228+
229+
# Microsoft Fakes
230+
FakesAssemblies/
231+
232+
# GhostDoc plugin setting file
233+
*.GhostDoc.xml
234+
235+
# Node.js Tools for Visual Studio
236+
.ntvs_analysis.dat
237+
node_modules/
238+
239+
# Typescript v1 declaration files
240+
typings/
241+
242+
# Visual Studio 6 build log
243+
*.plg
244+
245+
# Visual Studio 6 workspace options file
246+
*.opt
247+
248+
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
249+
*.vbw
250+
251+
# Visual Studio LightSwitch build output
252+
**/*.HTMLClient/GeneratedArtifacts
253+
**/*.DesktopClient/GeneratedArtifacts
254+
**/*.DesktopClient/ModelManifest.xml
255+
**/*.Server/GeneratedArtifacts
256+
**/*.Server/ModelManifest.xml
257+
_Pvt_Extensions
258+
259+
# Paket dependency manager
260+
.paket/paket.exe
261+
paket-files/
262+
263+
# FAKE - F# Make
264+
.fake/
265+
266+
# JetBrains Rider
267+
.idea/
268+
*.sln.iml
269+
270+
# CodeRush
271+
.cr/
272+
273+
# Python Tools for Visual Studio (PTVS)
274+
__pycache__/
275+
*.pyc
276+
277+
# Cake - Uncomment if you are using it
278+
# tools/**
279+
# !tools/packages.config
280+
281+
# Telerik's JustMock configuration file
282+
*.jmconfig
283+
284+
# BizTalk build output
285+
*.btp.cs
286+
*.btm.cs
287+
*.odx.cs
288+
*.xsd.cs

azure/worker/protos/_src/LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) Microsoft Corporation. All rights reserved.
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE

0 commit comments

Comments
 (0)