如何在多个服务器(或计算机)上运行相同的Python程序(脚本)?

发布于 2025-01-23 20:04:37 字数 2994 浏览 1 评论 0原文

如何在多个服务器(或计算机)上运行相同的Python程序(脚本)?我对电报机器人进行编程(使用Python-Telegram-Bot API),并希望我的程序同时在多个服务器上运行。

怎么办?没有得到“ telegram.err.conflict:冲突:由其他getupdates请求终止的东西;请确保只有一个bot实例正在运行”

此机器人将用于并发porpuse(例如检查图形管理信息)。

非常感谢您的帮助(和建议)。

def main() -> None:
    global updater
    global dispatcher
    
    updater = Updater(token="here should be the bot token provided by BotFather", use_context=True, workers=999)    
    
    dispatcher = updater.dispatcher
    

    start_handler = CommandHandler('start', start, 
                                    run_async=True)

    choice_handler = MessageHandler(Filters.text & ~Filters.command, 
                                    choice, run_async=True)

    income_handler = MessageHandler(Filters.regex(DECLARATION), 
                                    income, run_async=True)

    end_handler = MessageHandler(Filters.regex('Fin') | Filters.regex('Done') | Filters.regex(FINISH), 
                                    end, run_async=True)    
    
    stmt_handler = MessageHandler(Filters.regex(STMT) & ~Filters.command,
                                  declaracion_por_dia, run_async=True)

    stmt2_handler = MessageHandler(Filters.regex(STMT2) & ~Filters.command, 
                                   calendario_ultimos_siete, run_async=True)

    return_handler = MessageHandler(Filters.regex(RETURN) & ~Filters.command,
                                    choice, run_async=True)     

    callbackquery_handler = CallbackQueryHandler(declaracion_por_rango, run_async=True)

    cancel_convhandler = CommandHandler('cancel', cancel, 
                                            filters=Filters.regex('Cancel') 
                                            | Filters.regex('CANCEL'), run_async=True)

    conversation_handler = ConversationHandler(
                                                entry_points=[start_handler],   
                                                states={
                                                        CHOICE: [choice_handler, end_handler],                                                     
                                                        INCOME: [income_handler, end_handler],                                                     
                                                        CHOOSE: [stmt_handler, stmt2_handler, return_handler],
                                                        DEC_BY_RANGE: [callbackquery_handler]
                                                       },
                                                fallbacks=[cancel_convhandler],
                                                run_async=True
                                            )

    dispatcher.add_handler(conversation_handler)
    # dispatcher.add_error_handler(stmt_handler, run_async=True)
    updater.start_polling()
    updater.idle()


if __name__ == '__main__':

    main()

How can I run the same Python program (script) on multiple servers (or machines)? I programming a telegram bot (using python-telegram-bot API) and I wish my program running on multiple servers at the same time.

How can do it? without get something like "telegram.error.Conflict: Conflict: terminated by other getUpdates request; make sure that only one bot instance is running"

This bot will be used for concurrency porpuse (like checking graphical administrative information).

Thanks a lot for the help (and suggestions).

def main() -> None:
    global updater
    global dispatcher
    
    updater = Updater(token="here should be the bot token provided by BotFather", use_context=True, workers=999)    
    
    dispatcher = updater.dispatcher
    

    start_handler = CommandHandler('start', start, 
                                    run_async=True)

    choice_handler = MessageHandler(Filters.text & ~Filters.command, 
                                    choice, run_async=True)

    income_handler = MessageHandler(Filters.regex(DECLARATION), 
                                    income, run_async=True)

    end_handler = MessageHandler(Filters.regex('Fin') | Filters.regex('Done') | Filters.regex(FINISH), 
                                    end, run_async=True)    
    
    stmt_handler = MessageHandler(Filters.regex(STMT) & ~Filters.command,
                                  declaracion_por_dia, run_async=True)

    stmt2_handler = MessageHandler(Filters.regex(STMT2) & ~Filters.command, 
                                   calendario_ultimos_siete, run_async=True)

    return_handler = MessageHandler(Filters.regex(RETURN) & ~Filters.command,
                                    choice, run_async=True)     

    callbackquery_handler = CallbackQueryHandler(declaracion_por_rango, run_async=True)

    cancel_convhandler = CommandHandler('cancel', cancel, 
                                            filters=Filters.regex('Cancel') 
                                            | Filters.regex('CANCEL'), run_async=True)

    conversation_handler = ConversationHandler(
                                                entry_points=[start_handler],   
                                                states={
                                                        CHOICE: [choice_handler, end_handler],                                                     
                                                        INCOME: [income_handler, end_handler],                                                     
                                                        CHOOSE: [stmt_handler, stmt2_handler, return_handler],
                                                        DEC_BY_RANGE: [callbackquery_handler]
                                                       },
                                                fallbacks=[cancel_convhandler],
                                                run_async=True
                                            )

    dispatcher.add_handler(conversation_handler)
    # dispatcher.add_error_handler(stmt_handler, run_async=True)
    updater.start_polling()
    updater.idle()


if __name__ == '__main__':

    main()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文