由于本人之前是写node.js开发后端项目的,现在要接手同事的python项目,别急,问题不大,语言不是障碍。读完这篇文章,让你快速上手python。
安装python运行环境
在 macOS 上,Python 版本是系统的一部分,直接替换系统默认的 Python 版本可能会导致系统功能受影响,所以不建议直接替换系统 Python 版本。但可以安装另一个 Python 版本,并通过别名或者虚拟环境来使用它。
以下是安装 Python 3.8 并设置为默认版本的一种方法:
-
安装 Python 3.8:
首先,确保你已经下载了 Python 3.8 的安装程序。你可以从 Python 官方网站(www.python.org/downloads/)... macOS 的 Python 3.8 安装包。
安装完成后,你可以使用以下命令验证 Python 3.8 是否已经成功安装:
bashpython3.8 --version
-
创建别名:
打开 Terminal,并编辑你的 Shell 配置文件(通常是
~/.bash_profile
或~/.zshrc
),在文件末尾添加一行:bashalias python=python3.8
保存文件并重新启动 Terminal。现在,当你在 Terminal 中运行
python
命令时,将会使用 Python 3.8。 -
使用虚拟环境:
另一种常见的做法是使用虚拟环境来管理项目的 Python 版本。你可以为每个项目创建一个独立的虚拟环境,并在其中安装特定版本的 Python 和所需的依赖项。这样可以确保每个项目都可以使用所需的 Python 版本和依赖项,而不会相互干扰。
你可以使用
venv
工具或者第三方工具(如virtualenv
)来创建虚拟环境,具体步骤与前面提到的类似。
这些方法中,创建别名的方式可能更为简单,但你也可以根据个人偏好选择其他方法。请注意,修改系统默认的 Python 版本可能会对系统的正常运行产生影响,所以在进行操作之前请务必小心。
启动python项目
首先,使用 virtualenv
创建虚拟环境并启动项目的步骤如下:
- 安装
virtualenv
(如果尚未安装):
bash
pip install virtualenv
- 创建虚拟环境:
在项目目录中,使用 virtualenv
创建一个新的虚拟环境。假设你的项目目录名为 my_project
,可以执行以下命令:
bash
cd my_project
virtualenv venv
这将在项目目录中创建一个名为 venv
的新虚拟环境。
- 激活虚拟环境:
在 Unix/Linux/macOS 系统中,执行以下命令激活虚拟环境:
bash
source venv/bin/activate
在 Windows 系统中,执行以下命令:
bash
venv\Scripts\activate
激活虚拟环境后,你会看到命令行提示符前面有一个环境名称(通常是 (venv)
)。
- 安装项目依赖项:
在虚拟环境中使用 pip
安装项目所需的所有依赖项。假设你的依赖项列表存储在 requirements.txt
文件中,可以执行以下命令:
bash
pip install -r requirements.txt
- 运行项目:
一旦所有依赖项都安装完成,你可以在虚拟环境中直接运行项目。例如,如果你的项目入口文件为 main.py
,可以执行以下命令启动项目:
bash
python main.py
- 退出虚拟环境:
当你完成项目工作后,可以通过以下命令退出虚拟环境:
bash
deactivate
这样就可以退出虚拟环境,回到系统的全局 Python 环境中。
通过这些步骤,你可以使用 virtualenv
创建虚拟环境,并在其中启动你的项目。这有助于隔离项目的依赖项,使得不同项目之间的依赖关系不会相互干扰。
Celery 开发后端接口
由于我接手的项目中用到了celery,首先我们要知道它的原理和用法,才能更好的处理高并发业务。 Celery 是一个基于分布式消息传递的任务队列,用于处理大规模的异步任务。其原理涉及以下几个核心组件和概念:
-
消息代理(Message Broker): Celery 使用消息代理来传递任务消息。消息代理通常是一个可靠的消息队列,如 RabbitMQ、Redis、Amazon SQS 等。当应用程序调用 Celery 任务时,任务被序列化为消息并发送到消息代理中,然后被 Celery worker 进程消费并执行。
-
任务(Task) : 任务是由 Celery 定义和执行的异步工作单元。任务通常是简单的 Python 函数或方法,使用
@celery.task
装饰器进行装饰。当应用程序调用任务时,Celery 将任务封装成消息并发送到消息代理中,然后由 Celery worker 进程异步执行任务。 -
Celery Worker: Celery Worker 是一个独立的进程,负责从消息代理中获取任务消息并执行任务。Celery Worker 进程可以在一个或多个计算机节点上运行,通过消费消息队列中的任务消息来实现分布式任务处理。
-
结果后端(Result Backend): 任务执行完成后,Celery Worker 将执行结果返回给应用程序。结果后端是一个持久化存储,用于存储任务执行结果。常见的结果后端包括 Redis、数据库、文件系统等。应用程序可以通过结果后端获取任务执行状态和结果。
-
调度器(Scheduler): Celery 还包含一个可选的调度器组件,用于定时执行任务。调度器定期发送任务消息到消息代理中,以触发任务的执行。常见的调度器包括 Celery Beat。
Celery 的工作流程如下:
- 应用程序调用 Celery 任务时,任务被序列化为消息并发送到消息代理中。
- Celery Worker 进程从消息代理中获取任务消息,并执行任务。
- 执行结果被返回到结果后端,并通过结果后端提供的接口返回给应用程序。
通过这种方式,Celery 提供了一个灵活可靠的方式来处理异步任务,支持大规模的任务处理和分布式部署。 使用 Celery 快速开发后端接口通常涉及以下步骤:
-
安装 Celery: 在你的 Python 环境中安装 Celery:
bashpip install celery
-
创建 Celery 任务 : 创建一个或多个 Celery 任务来执行后台任务。任务可以是简单的函数,使用
@celery.task
装饰器进行装饰。pythonfrom celery import Celery app = Celery('tasks', broker='redis://localhost:6379/0') @app.task def add(x, y): return x + y
-
配置 Celery: 配置 Celery 使用的消息代理和其他参数。通常将配置保存在一个单独的文件中。
python# celeryconfig.py broker_url = 'redis://localhost:6379/0' result_backend = 'redis://localhost:6379/0'
-
启动 Celery worker : 在终端中使用
celery -A your_module_name worker --loglevel=info
命令启动 Celery worker。确保替换your_module_name
为你的模块名称。 -
调用 Celery 任务 : 在你的应用程序中调用 Celery 任务,可以通过导入任务函数并直接调用,也可以使用
delay()
方法异步调用任务。pythonfrom your_module_name import add # 同步调用任务 result = add.delay(4, 4) print(result.get()) # 异步调用任务 add.delay(4, 4)
-
监控任务执行: 使用 Celery 提供的工具监控任务的执行情况,包括任务状态、结果等信息。
bashcelery -A your_module_name inspect active celery -A your_module_name inspect scheduled
通过以上步骤,你可以快速使用 Celery 开发后端接口,并执行后台任务。Celery 提供了强大的分布式任务队列功能,能够帮助你实现异步任务处理、定时任务等功能。
读这篇之前,如果你是纯前端的同学,建议顺便读一下我的其它文章,了解一下后端常用的数据库和中间件,才能更好的使用和理解后端的各种分布式服务。很多时候,原理是相通的