mirror of
https://github.com/FlowiseAI/Flowise.git
synced 2026-10-12 02:02:17 +00:00
* feat: implement scheduling functionality for AgentflowV2 - Added ScheduleQueue class for managing scheduled jobs using BullMQ. - Introduced scheduleService for creating, updating, and disabling schedules. - Integrated schedule validation and cron expression handling. - Enhanced chatflow service to manage schedules for agentflows. - Added UI components for time and day selection (TimePicker, WeekDaysPicker, MonthDaysPicker). - Updated NodeInputHandler to support new input types for scheduling. - Improved validation for schedule configurations in agentflows. * feat: implement schedule management for agentflows - Refactor ScheduleQueue to utilize executeScheduleJob for job execution. - Add new endpoints for schedule status retrieval and enabling/disabling schedules in chatflows. - Update chatflow service to handle schedule creation, updates, and deletions more effectively. - Introduce DatePicker component for date input in UI. - Enhance CanvasHeader to manage schedule state and toggle functionality. - Integrate schedule validation logic to ensure proper configuration before enabling schedules. - Update dependencies to include node-cron for improved scheduling capabilities. * feat(schedule): refactor schedule services and tests for schedule job - Seperate the utils function from schedule service. - Created comprehensive unit tests for all utility functions in `utils.test.ts`, covering various scenarios for cron expression validation, visual picker validation, and schedule resolution. - Ensured proper handling of edge cases and error messages for invalid inputs. * feat(schedule): remove timestamp in schedule tabes to support sqlite - Change the way to update the existing schedule to avoid typescript issue when building. - Add merge function in mockRepo in schedule service test. * fix(schedule): add nullable to optional entity columns and entity interfaces - Add nullable: true to lastRunAt, nextRunAt, endDate on ScheduleRecord entity to match migration DDL and prevent runtime errors - Add IScheduleRecord and IScheduleTriggerLog interfaces to Interface.ts - Have entities implement their respective interfaces per codebase convention * fixed tests and hide schedule input from package/agentflow * feat: integrate IdentityManager into worker and queue management - Remove supporting cron express with 6 fields (second) - Calculate the prediction usage in cron job * feat: add support for MIN_SCHEDULE_INTERVAL_SECONDS in cron job configuration and validation * fixed broken tests * UI UX fixes for scheduler in dark mode * fix(schedule): remove unnecessary UUID generation in createOrUpdateSchedule * adds required scheduleInputMode column with text/form/none variants, ChatType.SCHEDULED, trigger-logs endpoint + drawer UI, IANA timezone dropdown, and dark-mode UX polish. * add deleteScheduleTriggerLogs endpoint and UI integration for log deletion * feat: enhance cron job handling for last day of month (L) in ScheduleBeat and related utilities Co-authored-by: Copilot <[email protected]> * - fix(start-node): persist declared defaults of newly-visible fields so saves don't drop required values - update ui for last day to include hints and next run datetime --------- Co-authored-by: Jackie Chui <[email protected]> Co-authored-by: Henry <[email protected]> Co-authored-by: Copilot <[email protected]>
Flowise Worker
By utilizing worker instances when operating in queue mode, Flowise can be scaled horizontally by adding more workers to handle increased workloads or scaled down by removing workers when demand decreases.
Here’s an overview of the process:
- The primary Flowise instance sends an execution ID to a message broker, Redis, which maintains a queue of pending executions, allowing the next available worker to process them.
- A worker from the pool retrieves a message from Redis. The worker starts execute the actual job.
- Once the execution is completed, the worker alerts the main instance that the execution is finished.
How to use
Setting up Main Server:
- Follow setup guide
- In the
.env.example, setup all the necessary env variables forQUEUE CONFIGURATION
Setting up Worker:
- Navigate to
docker/workerfolder - In the
.env.example, setup all the necessary env variables forQUEUE CONFIGURATION. Env variables for worker must match the one for main server. Change theWORKER_PORTto other available port numbers to listen for healthcheck. Ex: 5566 docker compose up -d- You can bring the worker container down by
docker compose stop
Entrypoint:
Different from main server image which is using flowise start, entrypoint for worker is pnpm run start-worker. This is because the worker's Dockerfile build the image from source files via pnpm build instead of npm registry via RUN npm install -g flowise.