taskiq-python / taskiq

Distributed task queue with full async support
MIT License
689 stars 44 forks source link

Allow configuring hot reload paths #318

Open kyboi opened 2 months ago

kyboi commented 2 months ago

Currently using --reload argument will take into account .gitignore, but there are files that will trigger a reload even when it isn't necessary. These files must be in the repo so can't be added to the ignore, e.g. docker configuration files.

Perhaps something like uvicorn does, with watchfiles:

https://github.com/encode/uvicorn/blob/master/uvicorn/supervisors/watchfilesreload.py

--reload                        Enable auto-reload.
--reload-dir PATH               Set reload directories explicitly, instead
                                  of using the current working directory.
--reload-include TEXT           Set glob patterns to include while watching
                                  for files. Includes '*.py' by default; these
                                  defaults can be overridden with `--reload-
                                  exclude`. This option has no effect unless
                                  watchfiles is installed.
--reload-exclude TEXT           Set glob patterns to exclude while watching
                                  for files. Includes '.*, .py[cod], .sw.*,
                                  ~*' by default; these defaults can be
                                  overridden with `--reload-include`. This
                                  option has no effect unless watchfiles is
                                  installed.
s3rius commented 2 months ago

That might be a good idea. Actually I'd want to implement it the way gunicorn did. Then actually check all files that are actually used by your python project and trigger reload only one of them has changed. Which might be a better fit.