介绍

简要介绍

Tornado是一个Python Web框架和异步网络库,最后由FriendFeed开发。 通过应用非阻塞网络I / O,Tornado能够扩大到成千上万的凋谢连贯,非常适合长时间轮询,WebSocket和须要与每个用户建设长期连贯的其余应用程序。
本案例应用x86_64架构虚拟机,通过评估工具x2openEuler评估tornado 4.2.1软件移植到openEuler操作系统的兼容性,并依据评估后果实现软件移植。

语言:C++/Python

一句话形容:一个Python Web框架和异步网络库

开源协定:Apache

倡议的版本

倡议应用版本为tornado 4.2.1。

阐明:
本文档实用于tornado 4.2.1,其余版本的tornado移植步骤也可参考本文档。

环境要求

操作系统要求

操作系统版本
openEuler20.03 LTS SP1
CentOS7.6

装置操作系统

如果是全新装置操作系统,装置形式倡议不要应用最小化装置,否则很多软件包须要手动装置,可抉择“Server with GUI”装置形式。
装置openEuler操作系统请参考:https://openeuler.org/zh/docs/20.03_LTS_SP1/docs/Installation/installation.html。

兼容性评估

获取tornado的RPM包

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-tornado-4.2.1-5.el7.x86_64.rpm
下载x2openEuler工具
下载指引:https://www.openeuler.org/zh/other/migration/
部署工具
rpm -ivh x2openEuler-2.0.0-1.x86_64.rpm
留神:装置rpm时须要应用root用户,且目前须要网络(用于下载安装依赖)
留神:依据提醒装置依赖包如bzip2-devel等
su x2openEulerx2openEuler redis-db -init
顺次录入redis数据库的ip:127.0.0.1
端口:6379
数据库索引号(0-16):0
明码(工具会对明码加密解决):如果redis明码没有设置或者为空时,间接回车即可
x2openEuler init source_centos7.6-openEuler20.03-LTS-SP1.tar.gz
备注:x2openEuler应用rpm装置实现后会在/opt/x2openEuler目录下带有source_centos7.6-openEuler20.03-LTS-SP1.tar.gz这个默认资源包
须要反对centos8.2到openEuler20.03-LTS-SP1的评估,则需获取对应的动态资源包导入,如对应的资源包为source_centos8.2-openEuler20.03-LTS-SP1.tar.gz,导入此包命令:x2openEuler init source_centos8.2-openEuler20.03-LTS-SP1.tar.gz,请示状况抉择对应的资源包
扫描软件
x2openEuler scan python-tornado-4.2.1-5.el7.x86_64.rpm留神要剖析的移植文件须要有可能让x2openEuler用户能够读取的权限扫描实现后会在/opt/x2openEuler/output目录生成html格局的报告

查看评估后果

软件兼容性评估报告分三块内容展现软件兼容性,别离是依赖包兼容性、C/C++接口兼容性、java接口兼容性,依赖包兼容性反映了软件包装置过程中的间接依赖,非100%表明无奈正确装置;接口兼容性反映的是单个软件运行过程中对其余软件包、动静库或零碎接口的调用变动,非100%表明在某个性能调用时可能会触发异样,未调用到时可能体现失常;局部后果倡议人工复核,最终软件包应用建优先级倡议 openEuler已移植包>openEuler上人工重编译包>centos软件包。

后果:通过报告可知内部接口兼容性100%,依赖包兼容性人工复核后通过,经评估tornado4.2.1软件包在openEuler 20.03 LTS SP1零碎上兼容,可装置此软件包至openEuler 20.03 LTS SP1零碎进行验证。

装置tornado

rpm装置

因为兼容性报告显示兼容,尝试间接用下载的rpm包装置。

[[email protected] ~]# yum install python-tornado-4.2.1-5.el7.x86_64.rpm -yLast metadata expiration check: 0:11:53 ago on Mon 22 Mar 2021 01:25:06 PM CST.Dependencies resolved.================================================================================ Package                              Arch   Version         Repository    Size================================================================================Installing: python-tornado                       x86_64 4.2.1-5.el7     @commandline 641 kInstalling dependencies: python2-backports                    x86_64 1.0-17.oe1      everything   9.2 k python2-backports-ssl_match_hostname noarch 3.7.0.1-2.oe1   everything    16 k python2-ipaddress                    noarch 1.0.23-1.oe1    everything    41 k python3-pycurl                       x86_64 7.43.0.3-1.oe1  OS            65 kTransaction Summary================================================================================Install  5 PackagesTotal size: 772 kTotal download size: 131 kInstalled size: 4.1 MDownloading Packages:(1/4): python2-backports-1.0-17.oe1.x86_64.rpm   53 kB/s | 9.2 kB     00:00(2/4): python2-backports-ssl_match_hostname-3.7  63 kB/s |  16 kB     00:00(3/4): python2-ipaddress-1.0.23-1.oe1.noarch.rp 126 kB/s |  41 kB     00:00(4/4): python3-pycurl-7.43.0.3-1.oe1.x86_64.rpm 113 kB/s |  65 kB     00:00--------------------------------------------------------------------------------Total                                           226 kB/s | 131 kB     00:00warning: /var/cache/dnf/OS-fcb43ce6e8cef091/packages/python3-pycurl-7.43.0.3-1.oe1.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID b25e7f66: NOKEYOS                                               14 kB/s | 2.1 kB     00:00Importing GPG key 0xB25E7F66: Userid     : "private OBS (key without passphrase) <[email protected]>" Fingerprint: 12EA 74AC 9DF4 8D46 C69C A0BE D557 065E B25E 7F66 From       : http://repo.openeuler.org/openEuler-20.03-LTS-SP1/OS/x86_64/RPM-GPG-KEY-openEulerKey imported successfullyRunning transaction checkTransaction check succeeded.Running transaction testTransaction test succeeded.Running transaction  Preparing        :                                                        1/1  Installing       : python2-ipaddress-1.0.23-1.oe1.noarch                  1/5  Installing       : python2-backports-1.0-17.oe1.x86_64                    2/5  Installing       : python2-backports-ssl_match_hostname-3.7.0.1-2.oe1.n   3/5  Installing       : python3-pycurl-7.43.0.3-1.oe1.x86_64                   4/5  Installing       : python-tornado-4.2.1-5.el7.x86_64                      5/5  Running scriptlet: python-tornado-4.2.1-5.el7.x86_64                      5/5  Verifying        : python3-pycurl-7.43.0.3-1.oe1.x86_64                   1/5  Verifying        : python2-backports-1.0-17.oe1.x86_64                    2/5  Verifying        : python2-backports-ssl_match_hostname-3.7.0.1-2.oe1.n   3/5  Verifying        : python2-ipaddress-1.0.23-1.oe1.noarch                  4/5  Verifying        : python-tornado-4.2.1-5.el7.x86_64                      5/5Installed:  python-tornado-4.2.1-5.el7.x86_64  python2-backports-1.0-17.oe1.x86_64  python2-backports-ssl_match_hostname-3.7.0.1-2.oe1.noarch  python2-ipaddress-1.0.23-1.oe1.noarch  python3-pycurl-7.43.0.3-1.oe1.x86_64Complete!

装置胜利。

运行和验证

查看版本

[[email protected] ~]# pythonPython 2.7.18 (default, Dec  8 2020, 03:37:36)[GCC 7.3.0] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> import tornado>>> tornado.version'4.2.1'

应用tornado

编写一个handlers来响应一个规范的http申请。(代码来自tornado官网https://www.tornadoweb.org/en/stable/)

vim hello.py

编辑内容如下:

import tornado.ioloopimport tornado.webclass MainHandler(tornado.web.RequestHandler):    def get(self):        self.write("Hello, world")def make_app():    return tornado.web.Application([        (r"/", MainHandler),    ])if __name__ == "__main__":    app = make_app()    app.listen(8888)    tornado.ioloop.IOLoop.current().start()

编辑后保留退出,在终端输出如下命令:

python hello.py

关上另外一个终端,输出如下命令。

curl http://localhost:8888

零碎回显如下,则示意装置胜利。

Hello, world

相干链接:

  1. openEuler官网:www.openeuler.org/
  2. OS迁徙专区: https://www.openeuler.org/zh/...
  3. openEuler兼容性列表:https://www.openeuler.org/zh/...
  4. openEuler迁徙指南:https://www.openeuler.org/zh/...