• 使用微服务实现多设备自动调度


    在实现app自动化过程中,有时候我们需要将多个手机中的任务,按照某种规则进行调度,这时仅仅使用移动端的脚本就无法完成了,需要配合使用微服务来完成。下面就举个例子来实际说明如何使用。

    需求

    假设我们有100台手机做任务,具体有如下需求:

    1. 按顺序来启动每台手机任务,移动端脚本名为:test。
    2. 两次启动之间需要加一个随机的间隔时间。
    3. 将自定义的参数传给每个启动的手机任务,自定义参数 「参数名:url,类型:string」。

    分析需求

    上面的需求其实非常简单,就是要求按一定规则顺序执行所有手机中的默认任务。

    1. 以上需求本质上是做100台手机的调度功能,仅依靠前端的js脚本是无法实现的,所以必须使用微服务。
    2. 由于需要输入参数url,所以我们可以使用「业务处理」服务来实现,添加一个url参数。
    3. 两手机任务启动间隔时间也可以做成参数,让用户自己选择间隔的范围。所以可以添加为minInterval和maxInterval两个参数分别表示最小和最大间隔时间(毫秒)。

    综上分析,微服务具有三个参数:url,minInterval、maxInterval。

    实现

    根据上述分析,我们可以先建立「业务处理」服务,然后再编写对应的「微服务脚本」来实现具体调度功能。

    1. 新建业务处理服务。在冰狐智能辅助网页端选择【微服务】/【业务处理】,点击右上角的"+服务"按钮,新建一个名为demo的业务处理服务。
    2. 添加参数。点击"参数"按钮,添加三个参数,分别为:【名称:url,id:url,类型:字符串】;【名称:最小间隔,id:minInterval,类型:整型】;【名称:最大间隔,id:maxInterval,类型:整型】。
    3. 新建微服务脚本。在冰狐智能辅助网页端选择【微服务】/【微服务脚本】,点击右上角的"+脚本"按钮,新建一个名为demo的脚本。
    4. 关联脚本和业务处理服务。在冰狐智能辅助网页端选择【微服务】/【业务处理】,点击"编辑"按钮,选择刚创建的"demo"为脚本。
    5. 实现微服务脚本。脚本的核心功能为:接收参数,根据参数和调度要求来启动每个手机任务。
      1. // url、minInterval,maxInterval为业务处理服务透传过来的参数
      2. function main(url, minInterval, maxInterval) {
      3. var devices = deviceList();
      4. for (var device of devices) {
      5. // 仅调度在线手机
      6. if (device.onlineState == 1) {
      7. // 在手机上执行移动端名为"test"的脚本,这里的url参数会直接透传给移动端脚本的main函数参数。
      8. scriptExe('test', device.uuid, [url], true);
      9. // 在minInterval和maxInterval之间随机延时一段时间
      10. sleep(Math.random() * (maxInterval - minInterval) + minInterval);
      11. }
      12. }
      13. }
    6. 执行服务。在冰狐智能辅助网页端【微服务】/【业务处理】,选择刚创建的"demo"服务,然后点击"执行"按钮,填充相关参数,点击"执行"即可执行代码。
    7. 如果您还没有手机端脚本(移动端脚本),可以参考下面的代码:
      1. // url参数的值,是上面的微服务脚本通过调用scriptExe函数透传过来的。
      2. function main(url) {
      3. console.log('url:' + url);
      4. }

    总结

    本文通过一个例子详细介绍了如何使用微服务实现多设备自动调度,各位同学可以根据自己的实际需求修改具体调度策略。

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    9月16日,每日信息差
    7.STL中string的一些超常用函数 (附习题)
    大数据的技术运用:探索未来的无限可能性
    excel表格怎么打印?来看看excel表格打印的正确打开方式
    对rust语言的一些理解
    1064 Complete Binary Search Tree
    爬虫抓取数据超时是什么原因?如何解决爬虫抓取数据超时问题?
    datawhale - 基于术语词典干预的机器翻译挑战赛 (一)
    Redis 哨兵模式
    Linux防火墙命令
  • 原文地址:https://blog.csdn.net/m0_62259629/article/details/127650586