标签: handler

登录python时如何选择处理程序

我正在使用 python 开发一个项目,我需要帮助记录日志部分。我的记录器有两个处理程序(系统日志和文件日志),并将日志发送给它们。有时我只需要发送日志中的一个。如何选择要使用的处理程序?感谢帮助...

global my_Sysloghandler
global my_logger, my_log_handler

my_Sysloghandler=logging.handlers.SysLogHandler()
my_log_handler= logging.FileHandler('/var/log/{0}.log'.format(__project__))
my_log_handler.setFormatter(logging.Formatter('%(asctime)s %(message)s'))                                                                              
my_log_handler.setLevel(level)
my_logger= logging.getLogger('my_logger')
my_logger.addHandler(my_log_handler)
my_logger.addHandler(my_Sysloghandler)

my_logger.debug('This log is sent to both handler but I want to send it only my_logger')
Run Code Online (Sandbox Code Playgroud)

python logging handler

5
推荐指数
1
解决办法
1557
查看次数

Svc 处理程序到 SMC 调用

如何在 C 中编写 svc 处理程序以调用 SMC(监控模式)指令以切换到 arm cortex a9 的监控模式?即从主管模式到监控模式都需要在 svc 处理程序中完成什么,如何在 C 中编写相同的内容。感谢详细答案...

c arm handler trustzone

5
推荐指数
1
解决办法
5932
查看次数

使用Looper.getMainLooper()初始化的处理程序不响应消息回调

我正在尝试实现从不同线程监听同一个Looper的Handler.

下面我有两个处理程序,一个在主线程中创建,另一个在子线程中,但是两个都初始化为侦听Main Looper.

private Handler mMain;
public static final ThreadPoolExecutor tpe =
        (ThreadPoolExecutor) Executors.newCachedThreadPool();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mMain = new Handler(Looper.getMainLooper()) {
        @Override
        public void handleMessage(Message msg) {
            Log.wtf("", "main:" + msg);
        }
    };

    tpe.execute(new Runnable() {
        private Handler tChild = new Handler(Looper.getMainLooper()) {
            @Override
            public void handleMessage(Message msg) {
                Log.wtf("", "child:" + msg);
            }
        };

        @Override
        public void run() {
            Log.wtf("", "send msg to main looper");
            tChild.sendEmptyMessage(100);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

但是当我发送如下消息时,只有子处理程序打印消息.主处理程序不接收消息.

03-20 22:02:26.754: A/(12857): …
Run Code Online (Sandbox Code Playgroud)

multithreading android handler looper

5
推荐指数
1
解决办法
8384
查看次数

Ubuntu 自定义 URL 协议处理程序

我想问一个问题,但我会先展示我的文件

<html>
<body>
<a href="cloudje:firefox">Open firefox</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我的 .desktop 文件:

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Exec=/usr/bin/cloudjerun -c gedit
Name[en_US]=Gedit
Comment[en_US]=Small, easy-to-use program to access iTunesU media
Name=TunesViewer
Comment=Small, easy-to-use program to access iTunesU media
Icon=/usr/share/icons/hicolor/scalable/apps/tunesview.svg
Categories=Application;Network;
MimeType=x-scheme-handler/cloudje;
Comment[en_US.utf8]=Small, easy-to-use program to access iTunesU media
Run Code Online (Sandbox Code Playgroud)

教程:http : //jarrpa.net/2011/10/28/creating-custom-url-handlers-in-ubuntu-11-04-11-10-gnome-3-0/

好的,这很酷。.desktop 文件将放置在 /usr/share/applications 中。如果您执行命令“xdg-open cloudje:firefox”或类似“xdg-open cloudje:example”的命令,它将始终使用名为“cloudjerun”的 Python 脚本执行 gedit。如何使用命令“xdg-open cloudje:firefox”执行firefox?

我是否需要将 'Exec=/usr/bin/cloudjerun -c gedit' 替换为 'Exec=/usr/bin/cloudjerun -c %U' 或 'Exec=/usr/bin/cloudjerun -c %s' 或其他内容?

linux url ubuntu protocols handler

5
推荐指数
1
解决办法
8317
查看次数

Eclipse冲突处理程序

在开发eclipse插件时,我在带有id crtc_v4.session的Manifest扩展中使用默认处理程序crtc_v4.handlers.StartSession创建了一个命令,我在清单中为此命令添加了一个处理程序,此处理程序根据变量crtc_v4.sessionvar启用命令.

控制台上出现的问题是:

!MESSAGE Conflicting handlers for crtc_v4.session:  {crtc_v4.handlers.StartSession@98bc5c} vs {crtc_v4.handlers.StartSession@1265d09}
Run Code Online (Sandbox Code Playgroud)

但它不会阻止运行插件.我问的是这个问题的解决方案,以及它是否会影响我的插件的性能?

编辑:

定义命令的代码段:

 <extension
     point="org.eclipse.ui.menus">
  <menuContribution
        allPopups="false"
        locationURI="toolbar:org.eclipse.ui.main.toolbar">
     <toolbar
           id="crtc_v5.crtctoolbar">
        <command
              commandId="crtc_v5.session"
              icon="icons/neutral.png"
              label="Start Session"
              style="push">
        </command>
     </toolbar>
  </menuContribution>
Run Code Online (Sandbox Code Playgroud)

定义处理程序的代码段:

 </extension>
      <command
        defaultHandler="crtc_v5.handlers.StartSession"
        id="crtc_v5.session"
        name="session">
  </command>
 </extension>
Run Code Online (Sandbox Code Playgroud)

这是对sessionvar的启用:

  <extension
     point="org.eclipse.ui.handlers">
  <handler
        class="crtc_v5.handlers.StartSession"
        commandId="crtc_v5.session">
     <enabledWhen>
        <with
              variable="crtc_v5.sessionvar">
           <equals
                 value="LOGGEDIN">
           </equals>
        </with>
     </enabledWhen>
  </handler>
Run Code Online (Sandbox Code Playgroud)

eclipse-plugin manifest eclipse-rcp handler

5
推荐指数
1
解决办法
4655
查看次数

Android中的全局消息池是什么?它驻留在内存中的什么位置?

当我查找Handler.obtainMessage()的功能时,我读到它从全局消息池中检索消息,而不是创建消息的新实例。此全局消息池位于何处?
它是之前创建的所有消息对象的集合吗?

android message handler

5
推荐指数
1
解决办法
1541
查看次数

如何在 Android 中的非 UI 线程上执行延迟

因此,关于如何在 Android 上进行延迟有多个类似的问题/答案。然而,他们主要专注于在 UI 线程上执行此操作。如果我需要延迟服务中的工作线程(并且我不想让线程进入睡眠状态)怎么办?Handler.postDelayed() 不起作用,因为存在“无法在线程内创建处理程序没有调用 Looper.prepare()”异常。CountDownTimer 出于同样的原因不起作用。而且我没有任何意见可以调用 runOnUiThread()。那么是在我拥有的每个线程上都有一个循环器的唯一解决方案还是有另一种方法可以做到这一点?

更新:这很愚蠢,但我在我自己的旧代码中找到了对我有用的答案:)。基本上,如果您想从非 UI 线程延迟启动 Runnable,您需要做的就是让主循环程序处理这个问题。

    Handler handler = new Handler(Looper.getMainLooper());
    Runnable r = new Runnable() {

        @Override
        public void run() {
        // Do stuff to be run after a delay
        // CAUTION: this won't be run on the same thread
        }
    };
    handler.postDelayed(r, DELAY_TIME); 
Run Code Online (Sandbox Code Playgroud)

缺点可能是该 Runnable 中的代码不会与原始代码在同一线程上运行。这就是为什么我不把这种方法作为被接受的答案(我承认,最初的问题听起来像是我希望在同一个非 UI 线程上发生一个定时事件。为此我还没有答案除了 Emmanuel 的那个,我必须在我的线程上附加一个 Looper)。然而,出于我的目的,这有效,因为我只需要在超时时启动服务。

multithreading android handler

5
推荐指数
1
解决办法
1133
查看次数

调度重复事件——Handler.PostDelayed 和 Doze

语境

我正在开发适用于 Android 的屏幕过滤器应用程序(如 f.lux)。我目前正在使用该功能在太阳落山时逐渐淡入过滤器。屏幕关闭时状态无关紧要,但是当屏幕打开时,淡入淡出进度正确(或立即更新)很重要。

技术要求

  • 我想以半规则的时间间隔触发一系列意图。
  • 当屏幕关闭时,它们可以被忽略/丢弃,除了:
    • 当屏幕打开时,必须立即触发最近的意图。
  • 我不想不必要地耗尽电池。

明显的解决方案以及为什么它们不起作用

您的警报的第一次触发不会在请求的时间之前,但在该时间之后几乎整个间隔内都不会发生。

我认为这意味着第一触发器将必然在第一时间间隔内发生,这意味着该装置将被唤醒,造成不必要的电池消耗。

  • 我可以AlarmManager.set用来安排第一个闹钟。当它熄灭时,我可以更新屏幕,然后安排下一个闹钟。这会起作用,但会在每次闹钟时唤醒旧设备(没有打瞌睡),而不是等到屏幕打开。它还使用 AlarmManger 作为计时器,文档明确建议反对:

对于计时操作(滴答、超时等),使用 Handler 更容易也更高效。

可以,然后呢,

  • 我可以设置一个警报来启动一个Handler,它会定期更新 UI。但是等等:这依赖于postDelayed,它说(强调我的):

在深度睡眠中花费的时间会增加执行的额外延迟。

我认为这意味着,当设备从睡眠中唤醒时,下一次更新可能不会在整个间隔内发生。我读对了吗?强迫用户在下一次更新之前等待一两分钟是一个交易破坏者。

CountDownTimer和ValueAnimator在他们的实现中都使用了这个方法,所以如果我对 Handler 的解释是正确的,那么他们都出局了。

我可以使用基于处理程序的方法,并在屏幕关闭时接收事件,此时我会取消现有动画,然后开始一个新动画。这看起来是最好的解决方案,但似乎应该有一种更简单的方法来做到这一点。

结论

关于这个主题还有很多其他的 SO 问题。每个人和他们的母亲都建议使用 Handler,但是除了上面的引用之外,绝对没有关于设备进入睡眠状态时它的行为方式的信息。(显然)没有其他人遇到过这个问题真的很奇怪——我是在做一些非常不寻常的事情,还是遗漏了一些基本的东西?

任何人都可以提供有关Handler.postDelayed设备进入睡眠状态时的真实行为的见解,并建议我在这种特定情况下应该做什么吗?

android timer handler alarmmanager android-doze

5
推荐指数
0
解决办法
939
查看次数

如何在delayed_job rails中获取处理程序的参数列表

我有我可以使用命令获得的所有计划作业的列表

延迟::工作.all

每个作业都有一个处理程序字段(字符串),其中包含一个“-”分隔的参数。我想找到这个字符串的参数之一。一种方法显然是拆分字符串并提取值,但如果传递的参数列表发生任何更改,则此方法将失败。

下面给出的是我的工作对象之一的处理程序字符串:

"--- !ruby/object:ActiveJob::QueueAdapters::DelayedJobAdapter::JobWrapper\njob_data:\n job_class: ActionMailer::DeliveryJob\n job_id: 7ce42882-de24-439a-a52a-5681453f4213\n mailers\n参数:\n - 事件通知\n - 提醒_网络研讨会_事件_注册\n - 交付_现在\n - mail@gmail.com\n - yesha\n - 89\n 语言环境::en\n"

我想知道是否有任何方法,我可以在保存作业对象的同时向作业对象发送额外的参数,以便稍后使用,而不是在处理程序字符串中进行搜索。或者,如果不是这样,我可以获得处理程序的参数列表,而不是解析字符串并使用它。

请帮助!

arguments handler delayed-job ruby-on-rails-4

5
推荐指数
1
解决办法
1582
查看次数

什么是 Python 中的简单英语处理程序

所以我问这个问题是因为在通过 Python 库、谷歌和 Stack Exchange 运行搜索时,我似乎找不到一个简单的措辞答案。

到目前为止我能找到的最好的是来自 wptserve:

“处理程序是具有通用签名的函数:

handler(request, response)
Run Code Online (Sandbox Code Playgroud)

预计处理程序将使用来自请求的信息(例如路径)来使用要发送的数据填充响应对象,或者通过与请求关联的 ResponseWriter 实例直接写入输出流。”

链接:https : //wptserve.readthedocs.io/en/latest/handlers.html

所以基本上,从我收集的信息来看,处理程序通过使用数据来响应用户请求,数据类型取决于请求的类型。

我相信它比那更复杂一点,但同样,真正需要的是一个非常简单的措辞,对处理程序是什么的概念性描述,没有花哨的术语。

python handler python-3.x

5
推荐指数
1
解决办法
2945
查看次数