配置 Dify 工作流定时任务

本文档详细说明如何在 Ubuntu 服务器上通过 Python 脚本调用 Dify 工作流 API,并使用 Cron 设置定时任务以实现每日自动运行(如生成报告并发送至天讯)。以下步骤基于 Ubuntu 环境,Python 3.x。

1. 发布 Dify 工作流并创建 API

在 Dify 平台中:

  1. 完成工作流设计后,点击 发布
  2. 创建工作流 API,获取 API 密钥。例如:
    app-NI1oPCQLZ7j44Nk


    API获取.png

2. 创建 Python 脚本

在服务器用户目录下创建 Python 脚本用于调用 Dify 工作流 API。

sudo nano /home/usr/test_dify_workflow.py

输入以下脚本内容:

import requests
import json
from datetime import datetime
import os

# Dify 工作流 API 配置
DIFY_API_URL = "http://IP/v1/workflows/run"
DIFY_API_KEY = os.getenv("DIFY_API_KEY", "app-NI1oPCzbpCk")

def trigger_dify_workflow():
    """调用 Dify 工作流 API"""
    headers = {
        "Authorization": f"Bearer {DIFY_API_KEY}",
        "Content-Type": "application/json"
    }
    payload = {
        "inputs": {},  # 根据工作流需求配置输入变量
        "response_mode": "blocking",  # 阻塞模式,确保结果返回
        "user": "user"  # 唯一用户标识
    }
    
    try:
        response = requests.post(DIFY_API_URL, headers=headers, json=payload)
        response.raise_for_status()
        result = response.json()
        print(f"工作流触发成功: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
        print(f"服务器响应: {json.dumps(result, indent=2, ensure_ascii=False)}")
    except requests.RequestException as e:
        print(f"工作流触发失败: {str(e)}")
        if e.response is not None:
            print(f"服务器响应: {e.response.text}")
        else:
            print("无服务器响应,可能为网络问题")

if __name__ == "__main__":
    trigger_dify_workflow()

保存并退出(Ctrl+XYEnter)。

3. 设置脚本执行权限

确保脚本可执行:

chmod +x /home/ljz/chuzhou_dify_workflow.py

4. 测试脚本

在虚拟环境中运行脚本,验证是否成功触发工作流并输出报告:

source /home/usr/dify_venv/bin/activate
python /home/ljz/test_dify_workflow.py

检查输出,确认工作流触发成功。

5. 配置 Cron 定时任务

设置 Cron 任务以每天早上 9 点自动运行脚本。

打开 Cron 配置文件

crontab -e

添加定时任务

添加以下行:

0 9 * * * /home/usr/dify_venv/bin/python /home/ljz/test_dify_workflow.py >> /home/usr/dify_workflow.log 2>&1

说明

  • 0 9 * * *: 每天 9:00 执行。
  • /home/ljz/dify_venv/bin/python: 使用虚拟环境中的 Python。
  • >> /home/ljz/dify_workflow.log 2>&1: 将标准输出和错误日志追加到指定文件。
  • DIFY_API_KEY 可通过环境变量设置,若已在脚本中硬编码,可省略。
    crontab定时任务示例.png

6. 测试 Cron 任务

为快速验证,临时将 Cron 设置为每分钟运行:

crontab -e

编辑为:

* * * * * /home/usr/dify_venv/bin/python /home/usr/test_dify_workflow.py >> /home/ljz/dify_workflow.log 2>&1

等待 1-2 分钟,检查日志文件:

cat /home/usr/dify_workflow.log

确认日志中包含“工作流触发成功”记录,且天讯收到报告。

7. 恢复定时任务

测试通过后,恢复为每天 9 点运行:

crontab -e

编辑为:

0 9 * * * /home/usr/dify_venv/bin/python /home/usr/test_dify_workflow.py >> /home/usr/dify_workflow.log 2>&1

8. 确保 Cron 服务运行

检查 Cron 服务状态:

sudo systemctl status cron

若未运行,启动并启用开机自启:

sudo systemctl start cron
sudo systemctl enable cron

9. 注意事项

  • 虚拟环境:确保脚本在正确的虚拟环境中运行,Cron 任务需指定虚拟环境的 Python 路径。
  • API 密钥安全:建议通过环境变量(如 export DIFY_API_KEY=xxx)设置 API 密钥,避免硬编码。
  • 日志监控:定期检查 /home/ljz/dify_workflow.log 以排查潜在问题。
  • 网络稳定性:确保服务器与 Dify API 地址(http://10.128.206.252/v1/workflows/run)的网络连接稳定。
  • 输入变量:根据工作流需求,在脚本的 payload["inputs"] 中配置必要的输入参数。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容