FMZ実装機 ロボット 自動検知 再起動プログラム (微信推送)

作者: リン・ハーンエイソン04開催日:2022年9月22日 (月) 18:07:19
タグ:

FMZ実装機 ロボット 自動検知 再起動プログラム (微信推送) imgこのページでは,FMZプラットフォームでご自身のアプリケーションのAPIとAPIkeyを入力します.img変数トークンは微信の送付コードです. ウェブサイトを開く:https://www.pushplus.plus/微信でログインして,PublicID (広告ではなく) をフォローしてください.imgメッセージをクリックしますimgトークンをコピーしてトークン変数に埋めますimgrobotId変数では,自己が監視する必要がある実体ロボット番号 (リスト形式) を入力します.imgFMZのウェブ版のディスクを開いて,ウェブサイトで取得することができます.

ローカルで実行できるコードを直接ダウンロードできます. しかし,コンピュータを常に開いておく必要があります. ウェブは,ウェブのコンテンツを,ウェブのコンテンツを,ウェブのコンテンツを,ウェブのコンテンツを,ウェブのコンテンツを,ウェブのコンテンツを,インターネットのコンテンツを,ウェブのコンテンツを,ウェブのコンテンツを,ウェブのコンテンツを,ウェブのコンテンツを,ウェブのコンテンツを,ウェブのコンテンツを,ウェブのコンテンツを,ウェブのコンテンツを,ウェブのコンテンツを. サーバー上で実行するには,前もって第三者データベースをインストールする必要があります.


'''
代码可以直接放到本地运行,
不过需要一直开启电脑,也可以放到自己的服务器上运行
'''

import time
import json
import ssl
import requests
ssl._create_default_https_context = ssl._create_unverified_context

try:
    import md5
    import urllib2
    from urllib import urlencode
except:
    import hashlib as md5
    import urllib.request as urllib2
    from urllib.parse import urlencode

accessKey = '48xxxxxxxxxxxxxxxxxxxxxxxxxxxxde'
secretKey = '91xxxxxxxxxxxxxxxxxxxxxxxxxxxx84'

def api(method, *args):
    d = {
        'version': '1.0',
        'access_key': accessKey,
        'method': method,
        'args': json.dumps(list(args)),
        'nonce': int(time.time() * 1000),
        }

    d['sign'] = md5.md5(('%s|%s|%s|%d|%s' % (d['version'], d['method'], d['args'], d['nonce'], secretKey)).encode('utf-8')).hexdigest()
    # 注意: urllib2.urlopen 函数,超时问题,可以设置超时时间,urllib2.urlopen('https://www.fmz.com/api/v1', urlencode(d).encode('utf-8'), timeout=10) 设置超时 10秒
    return json.loads(urllib2.urlopen('https://www.fmz.com/api/v1', urlencode(d).encode('utf-8')).read().decode('utf-8'))

def send_wechat(msg):
    token = '93xxxxxxxxxxxxxxxxxxxxxxxxxxxx57'  # 前边复制到那个token
    title = '【Waring】 策略信息'
    content = msg
    template = 'html'
    url = f"https://www.pushplus.plus/send?token={token}&title={title}&content={content}&template={template}"
    #print(url)
    r = requests.get(url=url)
    print(json.loads(r.text)['msg'])

robotId = [xxx,xxx,xxx]    #需要监视的机器人代码


while True:
    for j in range(len(robotId)):
        detail = api('GetRobotDetail', robotId[j])
        if detail['data']['result']['robot']['status'] == 1 and detail['data']['result']['robot']['wd'] == 1:
            print(f"实盘{robotId[j]}状态正常 status = {detail['data']['result']['robot']['status']},实盘监视已打开 wd = {detail['data']['result']['robot']['wd']}")
            pass
        elif detail['data']['result']['robot']['status'] == 1 :
            print(f"实盘{robotId[j]}状态正常 status = {detail['data']['result']['robot']['status']},实盘监视未打开 wd = {detail['data']['result']['robot']['wd']}")
            pass
        else:
            print(f"实盘{robotId[j]}状态异常 status = {detail['data']['result']['robot']['status']}")
            #尝试重启实盘   尝试次数 = 4    每5s 尝试一次
            status = False
            for i in range(4):
                api('RestartRobot', robotId[j])
                robotDetail = api('GetRobotDetail', robotId[j])
                print(f"尝试重启实盘{robotId[j]}第 {i+1} 次")
                if robotDetail['data']['result']['robot']['status'] == 1 :
                    mess = api('GetRobotLogs',robotId[j],0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
                    print(f"实盘{robotId[j]}重启完成 status = {api('GetRobotDetail', robotId[j])['data']['result']['robot']['status']}\n"
                          f"返回错误信息1:{mess['data']['result']['logs'][0]['Arr'][0][6]}\n"
                          f"返回错误信息2:{mess['data']['result']['logs'][0]['Arr'][1][6]}\n")
                    send_wechat(f"实盘{robotId[j]}重启完成 status = {api('GetRobotDetail', robotId[j])['data']['result']['robot']['status']}\n"
                                f"返回错误信息1:{mess['data']['result']['logs'][0]['Arr'][0][6]}\n"
                                f"返回错误信息2:{mess['data']['result']['logs'][0]['Arr'][1][6]}\n")
                    status = True
                    break
                else:
                    print(f"第 {i+1} 次 重启失败!!")
                time.sleep(5)
            if status == False :
                print(f"尝试 4 次重启实盘{robotId[j]}失败,发送警告信息!!")
                send_wechat(f"尝试 4 次重启实盘{robotId[j]}失败,请及时查看!!\n尝试 4 次重启实盘{robotId[j]}失败,请及时查看!!\n尝试 4 次重启实盘{robotId[j]}失败,请及时查看!!\n")
    time.sleep(60*10)


もっと

18180828122サーバーを稼働させるにはどうすればいいですか?