python -m manager.manager_test
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/home/ylu/repo/distribute-inference/manager/manager_test.py", line 13, in <module>
test_submit_job()
File "/home/ylu/repo/distribute-inference/manager/manager_test.py", line 7, in test_submit_job
xid = mgr.submitJob({"model":"nerf"})
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: JobManager.submitJob() takes 1 positional argument but 2 were given ,这是我遇到的问题,我的submitJob源码是 import redis
from mq import conn
class JobManager():
def __init__(self,**kwargs):
pass
def submitJob(self,**kwargs):
r = conn.get_client()
xid = r.xadd('jobs',kwargs)
return xid ## 是哪里有问题
错误信息表明JobManager.submitJob()
函数被调用时传递了两个位置参数,但该函数只定义了一个位置参数(即隐含的self
)。在Python中,实例方法的第一个参数总是self
,代表类的实例本身。你的submitJob
方法定义为接受任意数量的关键字参数(**kwargs
),这意味着你需要以关键字参数的形式调用它,而不是位置参数。
从你提供的manager_test.py
的代码片段来看,你调用submitJob
方法时传递了一个包含model
的字典作为位置参数。要解决这个问题,你需要将调用submitJob
方法的方式从位置参数更改为关键字参数。
这是你目前的调用方式:
xid = mgr.submitJob({"model":"nerf"})
为了符合submitJob
方法接受关键字参数的定义,你应该像这样调用它:
xid = mgr.submitJob(model="nerf")
这样,{"model":"nerf"}
中的"model"
将成为关键字参数的名称,而"nerf"
将是该参数的值。然后,这个关键字参数会被包含在submitJob
方法接收的kwargs
字典中。
如果你有多个参数要传递给submitJob
,你也可以这样做:
xid = mgr.submitJob(model="nerf", another_param="value", ...)
在这种情况下,所有的参数都将作为关键字参数传递,并且在submitJob
内部的kwargs
字典中可用。
我用ubuntu安装了redis,安装的当时,redis服务启动了,但是重启后,redis服务没有启动,我应该怎么正确的启动redis服务,我可以找到 redis-server这个命令
在Ubuntu系统上,如果你通过包管理器(如apt
)安装了Redis,那么Redis通常会配置为使用Systemd服务自动启动。如果Redis在重启后没有自动启动,你可以手动启动它,确保它设置为在启动时自动运行,或者检查是否有任何问题阻止了它的启动。
首先,手动启动Redis服务:
sudo systemctl start redis-server
确认Redis服务状态:
sudo systemctl status redis-server
如果你希望Redis在系统启动时自动启动,确保它被设置为开机自启动:
sudo systemctl enable redis-server
如果Redis服务没有正常启动,你可以检查日志文件获取更多信息:
sudo journalctl -u redis-server
这将显示Redis服务日志,可能会包含关于启动失败的详细信息。
如果你是通过手动下载和编译Redis源码来安装的,或者通过其他非标准方式安装的,你可能需要创建一个Systemd服务单元文件来管理Redis服务。这通常涉及到在/etc/systemd/system/
目录下创建一个名为redis.service
的文件,并配置适当的服务参数。
这是一个基本的Systemd服务单元文件示例,用于管理Redis服务(假设你的redis-server
可执行文件位于/usr/local/bin/redis-server
,并且你的配置文件位于/etc/redis/redis.conf
):
[Unit]
Description=Redis In-Memory Data Store
After=network.target
[Service]
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
你需要根据实际安装的位置调整ExecStart
和ExecStop
路径。创建好服务单元文件后,重新加载Systemd守护进程,启动Redis服务,并启用开机自启动:
sudo systemctl daemon-reload
sudo systemctl start redis.service
sudo systemctl enable redis.service
请确保使用正确的文件名和路径替换示例中的redis.service
、/usr/local/bin/redis-server
和/etc/redis/redis.conf
。
ubuntu下有好用的redis 桌面管理器吗
在Ubuntu下,你可以使用一些图形界面的Redis桌面管理器来方便地管理你的Redis实例。以下是一些流行的选项:
Redis Desktop Manager (RDM): Redis Desktop Manager 是一个跨平台的桌面Redis客户端,支持Linux、Windows和macOS。它是开源软件,但官方版是付费的。你可以从它的官网下载和安装,或者尝试从其他渠道(如Snapcraft)获取。
安装方法(通过Snap):
sudo snap install redis-desktop-manager
Another Redis Desktop Manager: 这是一个开源的、更现代化的Redis桌面管理器,它是完全免费的,并且也支持多个平台。它的用户界面基于Electron构建。
安装方法:
.AppImage
文件或.deb
安装包。.AppImage
文件,你可能需要先给它执行权限:chmod +x another-redis-desktop-manager-*.AppImage
./another-redis-desktop-manager-*.AppImage
.deb
安装包:sudo dpkg -i another-redis-desktop-manager-*.deb
FastoRedis: FastoRedis 是一个开源的Redis管理工具,可以用来管理本地和远程的Redis数据库。它支持多种Redis命令和数据格式。
安装方法:
.deb
文件并安装:sudo dpkg -i fastoredis-*.deb
Medis: Medis 是一个开源的、简洁的Redis管理应用程序。它提供了一个漂亮的界面和一些有用的特性,如支持键的模式匹配、自动格式化JSON等。
Medis 目前没有官方的Linux版本,但是GitHub上有一些非官方的构建版本,或者你可以选择从源码编译运行。
RedisInsight: RedisInsight 是Redis官方提供的一个免费的Redis数据库管理工具。它提供了一个直观的用户界面,支持数据可视化、慢查询分析等功能。
安装方法:
请注意,由于Linux发行版和软件版本的不断更新,安装方法可能会随着时间而变化。确保从官方网站或可信的来源下载最新版本的安装包,并遵循其提供的安装说明进行安装。