Functions Quickstart
In this tutorial we are going to create a demo python funciton in a step-by-step manner and deploy it on the DeepMux platform.
What are deepmux functions
DeepMux functions are serverless functions that allow you to write complex data processing algorithms without caring about setting up complex infrastructure.
Making sure deepmux-cli is installed
Check out the Installation guide for detailed instructions.
Setting up the project
We recommend creating your project in a separate directory. For example:
mkdir -p myproject
cd myproject
List function environments and choose the appropriate.
Environments are used to define language you are going to use to code the function and provide some pre-installed libraries.
deepmux env
We are going to use python3.7
environment
Then initialize the project with the following command:
deepmux init
This will create deepmux.yaml
and .deepmuxignore
files in your current directory.
Contents of deepmux.yaml
:
name: <required, function name>
env: <required, function env>
python:
call: <required, module:function to call>
requirements: <optional, path to requirements.txt>
Fill the name
field with myproject
and env
with python3.7
. You can use deepmux env
command to list all available environments.
Contents of .deepmuxignore
:
.deepmuxignore
It is a standard ignore file and should contain ignore patterns.
We are going to fill in name
, env
, call
and requirements
sections later.
Implementing function
Now it's time to implement the function itself.
In this example we will implement a functions that simply reverses it's input.
Create main.py
file in the project directory and fill it with the following code:
def reverse_function(data):
return data[::-1]
Functions written in Python accept
bytes
and returnbytes
.
Let's save this function to a file main.py
and add it as an entrypoint.
You need to open deepmux.yaml
and add main:reverse_function
to the call:
section.
At this point deepmux.yaml
would look like:
name: myproject
env: python3.7
python:
call: main:reverse_function
requirements: <optional, path to requirements.txt>
And the project structure should look like:
myproject/
myproject/deepmux.yaml
myproject/main.py
Add requirements (Optional)
If you don't have any requirements just delete the last line from
deepmux.yaml
file and skip this section.
You can add requirements for your function. Let's say we need numpy
package in our function.
Writerequirements.txt
file
numpy==1.19.4
And add path to the file in your deepmux.yaml
:
name: myproject
env: python3.7
python:
call: main:reverse_function
requirements: requirements.txt
Uploading the function
Once we've finished with the function, requirements and deepmux.yaml
we are able to upload function to the platform via cli.
deepmux upload
Function will take some time to process. You can use
deepmux list
command to get your functions and their statuses or simply check your functions via the Web UI.
Running the function
Once your function has finished processing and is in READY
state you can call it with an HTTP request.
Here's an example using curl:
curl -X POST \
-H "X-Token: <YOUR API TOKEN>" \
https://api.deepmux.com/v1/function/myproject/run \
--data "Hello!"
You should see the following on the screen:
!olleH
You also could run your function via cli:
deepmux run --name myproject --data 'hello!'
!olleh
Done! Now you are ready to implement more complex functions and enjoy deploying them on the DeepMux platform.