I need some files from the repositories¶
Besides running functions from the repositories, there also might be some files in the repositories that you need,
e.g. images for a webpage. With the
you can get the absolute path to that file, to where Arca cloned it.
The method accepts a relative path (can be a
str) to the file in the repository.
Example call (file
images/example.png from the branch
arca = Arca() path_to_file = arca.static_filename("https://example.com/hello_word.git", "master", "images/example.png")
path_to_file will be an absolute
If the file is not in the repository,
FileNotFoundError will be raised. If the provided relative path
leads out of the repo,
FileOutOfRangeError will be raised.
I will be running a lot of tasks from the same repository¶
Similarly as above, while you’re building a webpage you might need to run a lot of tasks from the same repositories, to render all the individual pages. However Arca has some overhead for each launched task, but these two options can speed things up:
This option ensures that each branch is only cloned/pulled once per initialization of
You can set it up with the
single_pull option (
This doesn’t help to speedup the first task from a repository, however each subsequent will run faster.
This setting is quite useful for keeping consistency, since the state of the repository can’t change in the middle
of running multiple tasks.
You can tell
Arca to pull again (if a task from that repo/branch is called again)
by calling the method
arca = Arca() ... # only this specific branch will be pulled again arca.pull_again(repo="https://example.com/hello_word.git", branch="master") # all branches from this repo will be pulled again arca.pull_again(repo="https://example.com/hello_word.git") # everything will be pulled again arca.pull_again()
If you’re using the Docker backend, you can speed up things by keeping the containers for running the tasks running. Since a container for each repository is launched, this can speed up things considerably, because starting up, copyting files and shutting down containers takes time.
This can be enabled by setting the
keep_container_running option to
When you’re done with running the tasks you can kill the containers by calling the method
arca = Arca(backend=DockerBackend()) ... arca.backend.stop_containers()