deployments/k8s/03-functions/functions.py (18 lines of code) (raw):

################################################################################ # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ################################################################################ import json from statefun import * import asyncio from aiohttp import web functions = StatefulFunctions() @functions.bind(typename="example/hello") async def hello(context: Context, message: Message): arg = message.raw_value().decode('utf-8') print(f"Hello from {context.address.id}: you wrote {arg}!", flush=True) handler = RequestReplyHandler(functions) async def handle(request): req = await request.read() res = await handler.handle_async(req) return web.Response(body=res, content_type="application/octet-stream") app = web.Application() app.add_routes([web.post('/statefun', handle)]) if __name__ == '__main__': web.run_app(app, port=8000)