首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python matplotlib作为cron作业运行时出现QxcbConnection错误

QxcbConnection错误通常与图形用户界面(GUI)库的显示服务器连接问题有关,尤其是在无头服务器或通过cron作业运行脚本时。Matplotlib依赖于这样的GUI库来显示图形,如果没有可用的显示服务器,就会出现这个错误。

基础概念

Matplotlib是一个Python的绘图库,它能够创建各种静态、动态和交互式的图表。QxcbConnection错误涉及到Qt库,这是Matplotlib用来创建图形界面的一个后端。

相关优势

Matplotlib的优势包括其灵活性、丰富的绘图功能以及广泛的社区支持。它能够生成高质量的图表,并且可以很容易地集成到其他Python项目中。

类型与应用场景

Matplotlib有多种后端,包括用于交互式显示的TkAgg、Qt5Agg等,以及用于非交互式输出的Agg。在服务器或cron作业中,通常使用非交互式后端。

问题原因

当Matplotlib尝试使用需要显示服务器的后端(如Qt5Agg)时,如果没有可用的X服务器或显示环境,就会出现QxcbConnection错误。

解决方法

要在cron作业中运行Matplotlib而不出现这个错误,可以采取以下几种方法:

  1. 更改后端:在脚本开始时设置Matplotlib使用非交互式后端,如Agg。
  2. 更改后端:在脚本开始时设置Matplotlib使用非交互式后端,如Agg。
  3. 设置环境变量:在cron作业中设置环境变量MPLBACKENDAgg
  4. 设置环境变量:在cron作业中设置环境变量MPLBACKENDAgg
  5. 使用虚拟显示:如果需要在图形界面中运行,可以使用虚拟显示服务器,如Xvfb(X Virtual Framebuffer)。
  6. 使用虚拟显示:如果需要在图形界面中运行,可以使用虚拟显示服务器,如Xvfb(X Virtual Framebuffer)。

示例代码

以下是一个简单的示例,展示了如何在脚本中设置Agg后端并生成一个图表:

代码语言:txt
复制
import matplotlib
matplotlib.use('Agg')  # 确保在导入pyplot之前设置后端
import matplotlib.pyplot as plt

# 创建数据
x = [1, 2, 3, 4]
y = [10, 20, 25, 30]

# 创建图表
plt.plot(x, y)
plt.title('Sample Plot')
plt.xlabel('X axis')
plt.ylabel('Y axis')

# 保存图表到文件
plt.savefig('/path/to/save/sample_plot.png')

通过上述方法,可以避免在cron作业中运行Matplotlib时出现QxcbConnection错误。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

caffe随记(九)---利用FCN和已有的model进行图像语义分割

本例中我们使用的是pascalcontext-fcn32的模型,这个下载链接在它的文件夹里有,就是url那个文件 下载  pascalcontext-fcn32s-heavy.caffemodel 这个文件 2、增加python...的路径 本次我使用的方法是 vim ~/.bashrc 在最后一行添加python路径,如下图,请根据自己的路径修改路径 ?...infer.py  然后发现报错了……错误如下所示: QXcbConnection: Could not connect to display ?...//就是增加了这两行 matplotlib.use('Agg') //就是增加了这两行 import matplotlib.pyplot as plt import caffe 然后就可以正常执行了...,因为我连的是服务器,是纯命令行界面,不能弹出生成图片的对话框,但是可以保存图片以供查看,算是解决问题了 执行 python infer.py 最后得出一个 test.png ?

1.3K00

利用FCN和已有的model进行图像语义分割

本例中我们使用的是pascalcontext-fcn32的模型,这个下载链接在它的文件夹里有,就是url那个文件 下载 pascalcontext-fcn32s-heavy.caffemodel 这个文件 2、增加python...的路径 本次我使用的方法是 vim ~/.bashrc 在最后一行添加python路径,如下图,请根据自己的路径修改路径 ?...infer.py 然后发现报错了……错误如下所示: QXcbConnection: Could not connect to display ?...matplotlib.use('Agg') //就是增加了这两行 import matplotlib.pyplot as plt import caffe 然后就可以正常执行了,因为我连的是服务器...,是纯命令行界面,不能弹出生成图片的对话框,但是可以保存图片以供查看,算是解决问题了 执行 python infer.py 最后得出一个 test.png ?

87910
  • 【Python】APScheduler简介

    APScheduler 内置了三种调度系统: Linux Cron 风格的调度系统(并有可选的开始和结束时间) 基于时间间隔的执行调度(周期性地运行作业 job ,并有可选的开始和结束时间) 只执行一次的延后执行作业调度...非默认的作业存储不会将作业数据保存到内存中,相反,内存会作为后端存储介质在保存、加载、更新和搜索 job 过程中的中间人。作业存储不会在调度器(scheduler)之间共享。...更方便的做法时,使用print_jobs()来格式化输出作业列表以及它们的触发器和下一次的运行时间。...错过的作业执行以及合并操作(coalescing) 有时候 scheduler 无法在被调度的 job 的计划运行时间点去执行这个 job 。...如果在你的应用程序中出现了这种情况,你可以增加 executor 的线程(进程)的数目,或者调整misfire_grace_time,设置一个更高的值。

    2.7K20

    《Linux命令行与shell脚本编程大全》第十六章 控制脚本

    16.1.3 捕获信号 也可以不忽略信号,在信号出现时捕获它们并执行相应命令。 trap命令允许你来指定脚本要监看并从shell中拦截的linux信号。...那么值钱带减号的就变成默认作业了。 16.4.2 重启停止的作业 可以将已停止的作业作为后台进程或前台进程(会接管你当前工作的终端)重启。 用bg命令实现。 bg 加上作业号。...atd会检查某个特殊目录(通常在/var/spool/at)来获取at命令提交的作业。默认情况下,atd会没60s检查一下这个目录,如果设置的运行时间和当前时间匹配,atd守护进程就会运行此作业。...2.获取作业的输出 显示器不会关联到该作业,取而代之的是linux将提交该作业的用户的电子邮件地址作为STDOUT和STDERR。任何标准输出和标准错误都会通过邮件发送给用户。...cron程序可以安排定期执行的作业。cron程序会在后台运行并检查一个特殊的表,来获取已安排执行的作业。 1.cron时间表 采用一种特别的格式来指定作业何时运行。

    3K61

    如何在Linux系统中使用Cron指南

    当cron作业运行时,它在受限环境中运行,这意味着它不会自动继承用户或系统的环境变量或路径。这可能会导致cron作业失败的问题,因为它无法找到必要的可执行文件或脚本,由于未定义或不正确的路径。...Cron将提醒您检测到的任何错误,提供了一个有价值的保护措施,防止意外输入无效的cron作业。...如何排查Cron作业 不幸的是,当Cron作业未能运行时,这可能会令人沮丧,并且根据任务的不同可能会有问题。因此,这里是一些基本指南,用于调查此问题的原因。 排查的第一步是确保Cron作业正确定义。...Cron作业示例 最后,我们将展示几个cron作业示例,它们几乎涵盖了所有可能的Cron语法情况。把这些作为你自己制作的基础。 命令 解释 * * * * * 每分钟运行一次Cron作业。...这些示例提供了各种Cron语法情境的参考,可以作为创建自己Cron作业的基础。 最佳实践和技巧 在用Cron安排之前手动测试您的脚本,以确保它们按预期工作。

    22210

    Python定时任务,三步实现自动化

    安装检查 安装完成后检查一下是否安装成功,同样使用 status命令查看 出现如下提示表示安装成功: [在这里插入图片描述] 另外,在ubuntu下可能会出现这样的提示: [在这里插入图片描述] 这个也表示可以正常使用...3. cron用法 有几个关于cron的简单用法可以了解一下,后面也会通过一个案例详细介绍如何使用 首先,列出当前用户计划的cron作业: crontab -l 查看其它用户的cron作业: crontab...–l –u username 移除已经计划的cron作业: crontab – 4....首先我们需要每天从ftp服务器中下载最新的任务数据,将数据下载到本地后通过Python进行数据汇总统计,最后将结果存入数据库中,如果期间某个环节出现问题则发送告警邮件。...说点题外话 如果说你平时的工作有很多重复的任务,像日常指标的采集、取数汇总统计、邮件自动转发等等 一旦这些工作你可以通过脚本设置好逻辑,自动化任务也就可以实现它,最多就需要你每天注意一下邮件,看看有没有发生错误就行了

    1.2K30

    Python基于APScheduler实现定时任务

    Python基于APScheduler实现定时任务 Python这个语言的优势就在于有丰富的第三方库,既然原生实现有这样那样的缺点,我们可以借助第三方库来实现定时任务。...APScheduler,即Advanced Python Scheduler的缩写,是一个简单易用的python定时框架。...BlockingScheduler适用于定时任务是唯一要执行的任务,BackgroundScheduler适用于定时任务不是唯一的任务,主线程还有其他任务要执行,因此将定时任务作为后台任务来执行。...date方式 最基本的方式,作业只会执行一次 date方式接收两个参数: run_date指定运行时间,可以精确到秒 from datetime import date from apscheduler.schedulers.blocking...The 'date' trigger and datetime.now() as run_date are implicit # 上面的英文的意思是date触发器是默认的触发器,此时此刻是默认指定的运行时间

    2.5K10

    Flink on Zeppelin 作业管理系统实践

    在研发作业管理系统中,我们引入Apache Zeppelin组件作为Flink SQL作业提交客户端,Flink 批流作业可视化预览的核心组件。...Zeppelin还支持在解析器/任务作用域的Flink运行时参数配置,集成hive catalog ,并支持简易的cron job执行,并对多版本Flink均提供了支持,最新的master分支支持了最新的...模式进行运行,由于每个长跑作业都需要建立实时监控,对server压力很大,调度任务从外部运行SQL,也经常出现卡顿,无法提交作业的情况。...具有水平扩展性,作业调度器可以兼容多个Zeppelin server 作为客户端提交作业; 批作业与流作业的Zeppelin server独立开,每次运行批作业使用AWS EMR 集成的Zeppelin...更加灵活的参数及依赖包管理模式 后续对特定作业的运行时参数及依赖包需要支持可定制,灵活配置,当然仅限新任务提交到新的cluster生效。

    2K20

    使用 at 命令在 Linux 上安排任务

    当你希望命令或脚本在某个特定时间运行时,你不需要将手指放在键盘上盘旋等待按下回车键,或者是在特定时间坐在办公桌前。相反,你可以通过 at 命令来设置任务。...at vs cron 对于那些使用 cron 在 Linux 系统上安排任务的人来说,at 命令类似于 cron,因为你可以在选定的时间调度任务,但是 cron 用于定期运行的作业 —— 甚至是每年仅一次...大多数 cron 作业的频率都设置为每天、每周或每月运行一次,不过你可以控制运行的频率和时间。 另一方面,at 命令用于仅运行一次的任务。想在午夜重启系统?...如果不可以,作业将退出并显示错误。如果可以,则运行在 at 中指定的命令。它将命令视为 “进入 /home/shs 或退出并显示错误”。...executed using /bin/sh at> reboot now at> job 37 at Wed Apr 1 16:00:00 2020 注意,root 的任务以 root 作为执行者显示在队列中

    2.9K20

    Python实现定时任务的几种方法

    APScheduler,即Advanced Python Scheduler的缩写,是一个简单易用的python定时框架。...BlockingScheduler适用于定时任务是唯一要执行的任务,BackgroundScheduler适用于定时任务不是唯一的任务,主线程还有其他任务要执行,因此将定时任务作为后台任务来执行。...date方式 最基本的方式,作业只会执行一次 date方式接收两个参数: run_date指定运行时间,可以精确到秒 from datetime import date from apscheduler.schedulers.blocking...The 'date' trigger and datetime.now() as run_date are implicit # 上面的英文的意思是date触发器是默认的触发器,此时此刻是默认指定的运行时间...实现定时任务 Python定时库APScheduler原理及用法 (部分参考文献已在文中列出)

    3.9K22

    用 Node.js 实现定时任务

    Cron 作业的另一个优点是,你可以安排程序以不同的时间间隔执行不同的脚本。 ?...这是 node-cron 的入口。我们希望能够定期删除错误日志文件,而不必进行手动操作。我们将用 node-cron 来做到这一点。首先看一个简单的任务。...Cron Job自动删除错误文件 注意:要模拟本任务,可以通过在参数中设置分钟数来将间隔设置为较短的时间 你可以在调度程序中执行任何操作。从创建文件到发送电子邮件和运行脚本的各种操作。...为了避免这种情况的发生,你还可以用 Cron 作业定期备份数据库中的现有数据。让我们来看看如何做到这一点。...服务正在运行的Cron作业 ? 由Cron Job自动发送的电子邮件 总结 在本文中,我介绍了 Cron 作业以及如何在 Node.js 程序中使用。

    5.7K10

    Python下定时任务框架APSched

    1).利用pip安装:(推荐) # pip install apscheduler 2).基于源码安装:https://pypi.python.org/pypi/APScheduler/ # python...TwistedScheduler: 适合使用Twisted框架的应用      QtScheduler: 适合使用QT的情况 4.配置调度器 APScheduler提供了许多不同的方式来配置调度器,你可以使用一个配置字典或者作为参数关键字的方式传入...当任务暂停时,它的运行时间会被重置,暂停期间不会计算时间。...scheduler.shutdown() 默认情况下调度器会关闭它的任务存储和执行器,并等待所有正在执行的任务完成,如果不想等待,可以进行如下操作: scheduler.shutdown(wait=False) 注意: 当出现...No handlers could be found for logger “apscheduler.scheduler”次错误信息时,说明没有  logging模块的logger存在,所以需要添加上,

    1.4K20

    如何在Ubuntu 14.04上使用Ansible部署高级PHP应用程序

    Queue: NO Cron: YES 这意味着cron正在后台正常工作。作为示例应用程序的一部分,有一个cron作业每分钟运行一次,更新数据库中的状态条目,以便应用程序知道它正在运行。...队列工作者与cron作业类似,因为他们在后台运行任务。不同之处在于应用程序通过用户执行的操作或通过cron作业调度的任务将作业推送到队列中。...这意味着cron将在第一次运行时启动该进程,并且当工作程序运行时,任何后续的cron运行都将被忽略run-one。一旦工作程序停止,run-one将允许该命令再次运行,并且队列工作程序将再次启动。...一分钟后,它将更新为如下所示: Queue: YES Cron: YES 这意味着队列工作者正在后台正常工作。我们在上一步中启动的cron作业将作业推送到队列中。...此作业在运行时更新数据库以显示其正在运行。 我们现在有一个工作示例Laravel应用程序,其中包括正常运行的cron作业和队列工作程序。

    10.7K60

    Agari使用Airbnb的Airflow实现更智能计划任务的实践

    Agari,是一家电子邮件安保公司,拦截钓鱼网站的问题,正越来越多地利用数据科学、机器学习和大数据的业务尤其出现在如Linkedln、Google和Facebook这样的数据驱动公司,以满足迅速增长的数据和建模需求...在这篇文章中,我将讨论我们使用工作流调度来提高我们数据管道可靠性的的需求,以提供之前文章的管道作为工作示例。...使用Cron时,一个开发者需要写一个程序用于Cron调用。...尽管Airflow能处理故障,有时最好还是隐藏DAG以避免不必要的错误提示。在如下截图中,那“cousin domains”DAG正是被禁用的。...因此,这个图很清晰地告诉了为了运行时间更可预测,如果我们要根据速度和可扩展性增强,我们该在哪里花时间。

    2.6K90

    Flask 学习-86.Flask-APScheduler 创建定时任务

    Advanced Python Scheduler(APScheduler)是一个Python库,可让Python代码稍后执行,一次或定期执行。...APScheduler的全称是Advanced Python Scheduler。 允许您将Python代码安排为稍后执行,可以只执行一次,也可以定期执行。您可以随时添加新作业或删除旧作业。...如果您将作业存储在数据库中,那么调度程序重启后它们也将存活下来并保持其状态。...当调度器重新启动时,它将运行它在离线时应该运行的所有作业,APScheduler文档https://link.zhihu.com/?...Flask-APScheduler 中默认使用的就是 BackgroundScheduler triggers 触发器 triggers支持三种任务触发方式 date:固定日期触发器,任务只运行一次,运行完毕自动清除;若错过指定运行时间

    2.1K30

    分布式定时任务Elastic-Job框架在SpringBoot工程中的应用实践(一)

    一般,使用这两种定时任务框架都会遇到如下的两个痛点问题: (1)如果业务工程采用集群化的部署,可能会多次重复执行定时任务而导致系统的业务逻辑错误,并产生系统故障。...其主要的功能如下: (1)定时任务:基于成熟的定时任务作业框架Quartz cron表达式执行定时任务; (2)作业注册中心:基于Zookeeper和其客户端Curator实现的全局作业注册控制中心...,记录作业上次运行开始时间,结束时间和下次运行时间; (8)支持配置定时任务停止、恢复和禁用:用于操作定时任务的启停,并可以禁止某任务的执行; (9)Spring支持:Elastic-Job-Lite...作为业务系统研发人员,可以考虑采用对集群内每一台机器分别处理一部分用户业务的方案来提高整体的处理执行效率。...其中,Script类型作业意为脚本类型作业,支持shell,python和perl等所有类型脚本,应用得不太多。

    2.8K20

    定时任务之crontab命令

    注意,普通用户一般没有权限访问/var/spool/cron ?...  命令:59 23 * * * /home/suifeng/scripts/test.sh 1>/home/suifeng/log.txt &   3、每天23点59分后台执行test.sh脚本;并将错误输出写书...(即将错误输出和标准输出全部写入log.txt中)   命令:59 23 * * * /home/suifeng/scripts/test.sh 1>/home/suifeng/log.txt 2>&1...& 相关说明:   0表示键盘输入   1表示标准输出   2表示错误输出   &表示后台执行   >>表示追加   >表示覆盖写 注意:   1、当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时...可以使用&命令把作业放到后台执行。   2、需要用户交互的命令不要放在后台执行,因为那样子机器将会在那一直等待   3、作业在后台运行时,一样会将结果输出在屏幕上,干扰你的正常工作。

    1.2K20

    如何使用 Ansible 和 anacron 实现自动化

    在错过了太多预定的备份之后,我发现了 anacron,一个基于时间戳而非预定时间的 cron 系统。如果你的电脑在通常情况下运行时处于关闭状态,anacron 会确保它在电脑重新开启时运行。...创建一个作业只需要简单地把一个 shell 脚本放到三个目录中:cron.day、cron.weekly 或者 cron.monthly (如果你想的话,你可以定义更多)。...与 Ansible 中的一切一样,如果目录已经存在,不会有错误或冲突。 用 Ansible 复制文件 ansible.buildin.copy 模块将文件从一个地方复制到另一个地方。...run-parts $HOME/.local/etc/cron.monthly/ 登录时运行 anacron 大多数 Linux 发行版将 anacron 配置为从 /etc/anacron 读取作业...我主要是作为一个普通用户使用 anacron,所以我从我的登录账号 ~/.profile 启动 anacron。我不想让自己记住这些配置,所以我让 Ansible 来做。

    78320

    python定时任务最强框架APScheduler详细教程

    另外最重要的一个特点是,因为他是基于 Python语言的库,所以是可以跨平台的,一段代码,处处运行! 在这里我来给大家详细介绍一下具体的用法。...使用内存的方式是简单高效,但是不好的是,一旦程序出现问题,重新运行的话,会把之前已经执行了的任务重新执行一遍。数据库则可以在程序崩溃后,重新运行可以从之前中断的地方恢复正常运行。...SQLAlchemyJobStore:使用 SQLAlchemy这个 ORM框架作为存储方式。 MongoDBJobStore:使用 mongodb作为存储器。...修改单个作业的触发器并更新下次运行时间: 使用 scheduler.reschedule_job(job_id,jobstore=None,trigger=None,**trigger_args) 7....输出作业信息: 使用 scheduler.print_jobs(jobstore=None,out=sys.stdout) 十、异常监听: 当我们的任务抛出异常后,我们可以监听到,然后把错误信息进行记录

    8.2K32
    领券